<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The CodeRx Newsletter]]></title><description><![CDATA[The intersection of pharmacists who code and developers who (health)care.]]></description><link>https://coderxio.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!RWTa!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F82ec2b97-44ad-49ee-98ad-167e88c587dd_500x500.png</url><title>The CodeRx Newsletter</title><link>https://coderxio.substack.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 06 Apr 2026 21:27:36 GMT</lastBuildDate><atom:link href="https://coderxio.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[CodeRx, LLC]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[hello@coderx.io]]></webMaster><itunes:owner><itunes:email><![CDATA[hello@coderx.io]]></itunes:email><itunes:name><![CDATA[Joey LeGrand]]></itunes:name></itunes:owner><itunes:author><![CDATA[Joey LeGrand]]></itunes:author><googleplay:owner><![CDATA[hello@coderx.io]]></googleplay:owner><googleplay:email><![CDATA[hello@coderx.io]]></googleplay:email><googleplay:author><![CDATA[Joey LeGrand]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Introducing the CodeRx Drug Database]]></title><description><![CDATA[The drug data solution that actually makes sense]]></description><link>https://coderxio.substack.com/p/introducing-the-coderx-drug-database</link><guid isPermaLink="false">https://coderxio.substack.com/p/introducing-the-coderx-drug-database</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Wed, 04 Feb 2026 16:00:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZDab!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f175-d0e6-4c19-9cf0-3e17f7a17c2c_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3><strong>Why choose between unusable and unaffordable when there&#8217;s a better way?</strong></h3><p>For years, anyone building healthcare software, conducting pharmacy research, or analyzing medication data has faced an unfair choice. On one side: free government data that requires months of learning obscure formats, parsing XML from nested zip files, and becoming an expert in RxNorm&#8217;s abstract table structures. On the other: enterprise drug databases with six-figure price tags and vendor lock-in.</p><p><strong>We built the CodeRx Drug Database because there should be a better choice.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZDab!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f175-d0e6-4c19-9cf0-3e17f7a17c2c_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZDab!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f175-d0e6-4c19-9cf0-3e17f7a17c2c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ZDab!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f175-d0e6-4c19-9cf0-3e17f7a17c2c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ZDab!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f175-d0e6-4c19-9cf0-3e17f7a17c2c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ZDab!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f175-d0e6-4c19-9cf0-3e17f7a17c2c_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZDab!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f175-d0e6-4c19-9cf0-3e17f7a17c2c_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0884f175-d0e6-4c19-9cf0-3e17f7a17c2c_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1379840,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://coderxio.substack.com/i/185103559?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f175-d0e6-4c19-9cf0-3e17f7a17c2c_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZDab!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f175-d0e6-4c19-9cf0-3e17f7a17c2c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ZDab!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f175-d0e6-4c19-9cf0-3e17f7a17c2c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ZDab!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f175-d0e6-4c19-9cf0-3e17f7a17c2c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ZDab!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f175-d0e6-4c19-9cf0-3e17f7a17c2c_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Pictured: a server pharm. &lt;/joke&gt;</figcaption></figure></div><h2><strong>The problem we&#8217;re solving</strong></h2><p>Five years ago, when we needed drug data for a healthcare software development project, we discovered what thousands of developers and analysts already knew: there&#8217;s no middle ground. You either spend months learning to work with raw data sources like RxNorm, FDA, and DailyMed, or you sign a contract that costs more than most early-stage startups can afford.</p><p>We chose to build our own data pipeline. We learned the hard way that &#8220;open&#8221; doesn&#8217;t mean &#8220;easy.&#8221; We figured out the best way to parse DailyMed&#8217;s 50,000+ XML files buried in nested zip files. We became fluent in RxNorm&#8217;s SABs and TTYs. We normalized NDC formats across five different data sources. We automated and enhanced weekly pricing updates from CMS NADAC data.</p><p>When our project was complete, we realized something: we had built exactly what the healthcare community needed. Not another GitHub repo that tackles one narrow problem. Not another stagnant open-source project. But a complete, supported, modern drug data product that anyone could use.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ngmn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305e950a-6db5-4307-985b-c8145332910a_500x756.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ngmn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305e950a-6db5-4307-985b-c8145332910a_500x756.png 424w, https://substackcdn.com/image/fetch/$s_!ngmn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305e950a-6db5-4307-985b-c8145332910a_500x756.png 848w, https://substackcdn.com/image/fetch/$s_!ngmn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305e950a-6db5-4307-985b-c8145332910a_500x756.png 1272w, https://substackcdn.com/image/fetch/$s_!ngmn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305e950a-6db5-4307-985b-c8145332910a_500x756.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ngmn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305e950a-6db5-4307-985b-c8145332910a_500x756.png" width="500" height="756" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/305e950a-6db5-4307-985b-c8145332910a_500x756.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:756,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:490548,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://coderxio.substack.com/i/185103559?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305e950a-6db5-4307-985b-c8145332910a_500x756.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ngmn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305e950a-6db5-4307-985b-c8145332910a_500x756.png 424w, https://substackcdn.com/image/fetch/$s_!ngmn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305e950a-6db5-4307-985b-c8145332910a_500x756.png 848w, https://substackcdn.com/image/fetch/$s_!ngmn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305e950a-6db5-4307-985b-c8145332910a_500x756.png 1272w, https://substackcdn.com/image/fetch/$s_!ngmn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305e950a-6db5-4307-985b-c8145332910a_500x756.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An oldie but a goodie. We finally built a better option.</figcaption></figure></div><h2><strong>Why the CodeRx Drug Database is different</strong></h2><h3><strong>Better than raw open data</strong></h3><p><strong>You don&#8217;t need to become a government data format expert.</strong> We&#8217;ve done that part.</p><p>Instead of spending weeks learning RxNorm&#8217;s abstract RXNCONSO, RXNREL, and RXNSAT tables, you get purpose-built data marts like drugs, ingredients , packages, and classes that actually make sense to pharmacists and developers.</p><p>No more parsing XML from DailyMed zip files. No more Excel formulas to normalize NDC formats every time you download fresh data from FDA and CMS. No more writing complex SQL joins just to answer basic questions about drug products.</p><p><strong>Setup in minutes, not months.</strong> Browse our open documentation to explore the exact data structure, or subscribe to weekly updates for production use. Either way, you&#8217;re working with clean, integrated data from day one.</p><p><strong>Documentation built for humans.</strong> Our web-hosted, searchable documentation includes specific use cases with SQL examples. No lengthy PDFs to search through. No generic technical documentation written for data scientists. Just clear explanations focused on pharmacy applications.</p><h3><strong>More affordable than proprietary databases</strong></h3><p><strong>Costs 90% less than alternatives.</strong> That&#8217;s not a typo.</p><p>For early-stage startups, researchers, and data analysts, enterprise drug databases are simply out of reach. The CodeRx Drug Database costs at least 90% less while providing the core data you actually need.</p><p><strong>Modern integration.</strong> No complex vendor contracting. No legacy data formats. Just straightforward CSV (or Parquet!) files you can load into any modern database or analytics tool.</p><p><strong>Analytics-ready data.</strong> Proprietary databases provide terminology that requires transformation for common use cases. The CodeRx Drug Database gives you semantic drug concepts organized around real-world pharmacy questions - identifying drug classes, calculating days&#8217; supply, grouping therapeutics - without writing complex transformations every time.</p><p><strong>Community-driven innovation.</strong> When you have an idea for a new data mart or feature, we can build it together. No waiting for a vendor&#8217;s product team to add it to their multi-year roadmap.</p><h2><strong>What you get</strong></h2><p>The CodeRx Drug Database includes pre-built data marts that solve real pharmacy problems:</p><ul><li><p><strong>Packages</strong>: NDC-to-drug mappings with brand vs generic indicator and pricing data</p></li><li><p><strong>Drugs</strong>: Unified view of brand and clinical products with dose forms, ingredients, and brand relationships</p></li><li><p><strong>Classes:</strong> Multiple classification systems to aggregate drugs by therapeutic class or indication</p></li><li><p><strong>Ingredients</strong>: Detailed ingredient strength information, including precise ingredient classifications</p></li><li><p><strong>Excipients</strong>: Inactive ingredient tracking with special flags for preservatives, dyes, and gluten</p></li><li><p><strong>Synonyms</strong>: Multi-source synonym aggregation for improved search and matching</p></li><li><p><strong>Plus analytics-ready data marts</strong> for common pharmacy use cases</p></li></ul><p>All data is integrated from multiple authoritative sources: FDA - NDC Directory, NLM - RxNorm and DailyMed, CMS - NADAC, and more.</p><h2><strong>Who this is for</strong></h2><p><strong>Early-stage health tech startups</strong> that need professional drug data without enterprise pricing</p><p><strong>Pharmacy researchers and analysts</strong> who want to focus on insights, not data wrangling</p><p><strong>Healthcare developers</strong> building medication-related features who need reliable, well-structured drug data</p><p><strong>Anyone who&#8217;s ever thought</strong> &#8220;there has to be a better way than learning RxNorm from scratch&#8221;</p><h2><strong>The best of all worlds</strong></h2><p>You shouldn&#8217;t have to choose between spending months learning government data formats and spending six figures on enterprise software. You shouldn&#8217;t have to reinvent the wheel just to get basic drug information into your application.</p><p>The CodeRx Drug Database is the solution we wish existed five years ago. It&#8217;s affordable, modern, easy to use, and built by pharmacists who code and developers who care about healthcare.</p><p><strong>Ready to stop wrestling with drug data and start building?</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderx.io/&quot;,&quot;text&quot;:&quot;Get Started&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderx.io/"><span>Get Started</span></a></p><h2><strong>Get started now</strong></h2><p>Want to see what we&#8217;ve built? All our documentation is available right now on our website:</p><p><strong><a href="https://coderx.io/docs">Explore the Docs &#8594;</a></strong></p><p>Need weekly updates? Let&#8217;s talk about a subscription that makes sense for your organization.</p><p><strong><a href="https://coderx.io/pricing">Subscription Options &#8594;</a></strong></p><p>Have questions? Shoot us a message or jump into the CodeRx Slack and we will help answer them.</p><p><strong><a href="https://coderx.io/contact-us">Contact Us &#8594;</a></strong></p><div><hr></div><p>The CodeRx Drug Database is maintained by CodeRx, LLC. Our open-source data pipeline powers everything we do, and our commitment to the healthcare community means we&#8217;re always looking for ways to make drug data more accessible. View our code on <a href="https://github.com/coderxio/sagerx">GitHub</a> or learn more at <a href="https://coderx.io/">coderx.io</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Last Christmas, I gave you my marts]]></title><description><![CDATA[But the very next day, you gave them away (or at least I hope you did)]]></description><link>https://coderxio.substack.com/p/last-christmas-i-gave-you-my-marts</link><guid isPermaLink="false">https://coderxio.substack.com/p/last-christmas-i-gave-you-my-marts</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Fri, 26 Dec 2025 16:42:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BXqQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F805d512f-83a5-4af2-8f0b-59d98f9d3e33_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ll be honest: there was no Q3 Compendium this year. I was actually <a href="https://formulary.coderx.io/">busy vibe coding</a> <em>using</em> Compendium data - more on that in another post. And admittedly I&#8217;m barely making it in under the wire with a Q4 Compendium. Plus, I know it&#8217;s the day after Christmas and those who celebrate might be busy. Or maybe a distraction from holiday festivities is welcome. Either way I&#8217;ll keep this short.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BXqQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F805d512f-83a5-4af2-8f0b-59d98f9d3e33_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BXqQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F805d512f-83a5-4af2-8f0b-59d98f9d3e33_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BXqQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F805d512f-83a5-4af2-8f0b-59d98f9d3e33_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BXqQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F805d512f-83a5-4af2-8f0b-59d98f9d3e33_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BXqQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F805d512f-83a5-4af2-8f0b-59d98f9d3e33_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BXqQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F805d512f-83a5-4af2-8f0b-59d98f9d3e33_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/805d512f-83a5-4af2-8f0b-59d98f9d3e33_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:377898,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://coderxio.substack.com/i/182414430?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F805d512f-83a5-4af2-8f0b-59d98f9d3e33_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BXqQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F805d512f-83a5-4af2-8f0b-59d98f9d3e33_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BXqQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F805d512f-83a5-4af2-8f0b-59d98f9d3e33_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BXqQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F805d512f-83a5-4af2-8f0b-59d98f9d3e33_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BXqQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F805d512f-83a5-4af2-8f0b-59d98f9d3e33_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This release is just a refresh of the existing data marts. However, based on my aforementioned foray into the land of vibe coding, I&#8217;ve started <a href="https://www.reddit.com/r/todayilearned/s/tXyrbDS8hX">eating my own dogfood</a> as the saying goes. </p><p>In plain English, what I&#8217;m trying to say is that for the past year or more, I&#8217;ve been putting easy(ish)-to-use drug data out there in the hopes that people would use it to build cool and useful things&#8230; but I&#8217;ve kind of intentionally avoided building those things myself so I wouldn&#8217;t get distracted from actually producing the data. </p><p>With the advent of tools like LLMs-in-an-IDE (I use Cursor), it&#8217;s pretty easy to spin up entire apps on a whim without getting bogged down in the minutia of details. This let me easily use my own data to build an app and I found a few things that could definitely be improved or changed about the format of the data. So - like a dog food company eating its own dog food before selling it to customers (dogfooding - see above), I&#8217;m experimenting with being a data company using my own data.</p><p>So while not much as changed with the actual data available in the Compendium the past quarter or two, a lot of thought has been put into how the Compendium is used and how it could be better. Expect a Compendium v0.0.2 in the new year and some ruminations on why I think a slightly different organization will make sense to a lot of people. Possibly even some API access&#8230; we shall see.</p><p>Sign up for free access to the current Compendium at the link below. If you already have access, the link did not change, but the files are updated.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderx.io/data-marts&quot;,&quot;text&quot;:&quot;Access Compendium data marts&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderx.io/data-marts"><span>Access Compendium data marts</span></a></p><p>If you have been using any CodeRx products over the past year (SageRx, ParseRx, Compendium, etc), I would love to hear from you. How are you using it? What have you modified for your own purposes? What are we missing? What could we do better? If you have 5 minutes to spare, please leave some feedback at the link below.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://forms.gle/BmqLrWbZqfjHhvh19&quot;,&quot;text&quot;:&quot;CodeRx feedback survey&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://forms.gle/BmqLrWbZqfjHhvh19"><span>CodeRx feedback survey</span></a></p><p>Thanks so much for following along this year. Hope you have a happy holiday season and a great new year!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[The hidden dependency in drug pricing transparency]]></title><description><![CDATA[Why transparent drug pricing relies on proprietary pack size data]]></description><link>https://coderxio.substack.com/p/the-hidden-dependency-in-drug-pricing</link><guid isPermaLink="false">https://coderxio.substack.com/p/the-hidden-dependency-in-drug-pricing</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Wed, 24 Sep 2025 15:39:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4JuH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8736032e-ab56-4156-9820-f42b8a776b2f_1536x1024.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week, a pharmacy manager called me with what seemed like a simple question: &#8220;How can I compare the prices I&#8217;m paying to NADAC to see where I might be overpaying?&#8221; It&#8217;s a reasonable request&#8212;NADAC (National Average Drug Acquisition Cost) exists to provide transparent pricing benchmarks, and this pharmacy contributes their own purchase data to the system. Surely they should be able to use it for internal analysis, right?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4JuH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8736032e-ab56-4156-9820-f42b8a776b2f_1536x1024.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4JuH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8736032e-ab56-4156-9820-f42b8a776b2f_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!4JuH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8736032e-ab56-4156-9820-f42b8a776b2f_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!4JuH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8736032e-ab56-4156-9820-f42b8a776b2f_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!4JuH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8736032e-ab56-4156-9820-f42b8a776b2f_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4JuH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8736032e-ab56-4156-9820-f42b8a776b2f_1536x1024.webp" width="1536" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8736032e-ab56-4156-9820-f42b8a776b2f_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1536,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:73090,&quot;alt&quot;:&quot;Comparing Advils to Advils (bad joke)&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Comparing Advils to Advils (bad joke)" title="Comparing Advils to Advils (bad joke)" srcset="https://substackcdn.com/image/fetch/$s_!4JuH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8736032e-ab56-4156-9820-f42b8a776b2f_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!4JuH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8736032e-ab56-4156-9820-f42b8a776b2f_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!4JuH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8736032e-ab56-4156-9820-f42b8a776b2f_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!4JuH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8736032e-ab56-4156-9820-f42b8a776b2f_1536x1024.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Comparing Advils to Advils. OK I know Advil probably wouldn&#8217;t be in a prescription vial, but work with me here&#8230;</figcaption></figure></div><p>The answer revealed a fundamental challenge with NADAC when used for this purpose. To directly compare prices against NADAC, you need to use the exact same total pack size units that NADAC uses for its calculation. Unfortunately, that pack size data is locked behind the paywall and license of a commercial drug information database.</p><h2>The pack size problem</h2><p>Every meaningful drug price comparison requires one critical piece of information: how many units are in each package. Normalizing costs to the lowest unit makes it easy to know the average cost of a drug regardless of whether it comes in a 100 count or 500 count or 1000 count bottle. When a pharmacy pays $100 for a bottle of 100 tablets, calculating the per-unit cost is straightforward. But what about an inhaler? A vial of injectable medication? A colonoscopy prep kit? A unit-dose package?</p><p>This is where things get complicated. The National Council for Prescription Drug Programs (NCPDP) has established standards for pharmaceutical billing units&#8212;&#8221;EA&#8221; for each, &#8220;ML&#8221; for milliliters, and &#8220;GM&#8221; for grams. These standards provide the framework, but implementing them correctly requires navigating a 30+ page specification document filled with exceptions, edge cases, and industry-specific nuances.</p><p>Most organizations don&#8217;t implement these standards themselves. Instead, they rely on commercial drug databases like FDB (First Databank) or Medispan, which have spent decades building comprehensive implementations of these standards. Pharmacies access these databases through their pharmacy management systems, but the pack size data typically isn&#8217;t available in a format that allows for easy price comparison analysis.</p><h2>The NADAC use case</h2><p>NADAC itself relies on this commercial database approach. When Myers and Stauffer (the consulting firm that collects NADAC data) receives pricing submissions from pharmacies, they use commercial databases to determine pack sizes and calculate per-unit costs. A pharmacy submits an NDC and the total price paid; the database lookup provides the pack size; division gives the per-unit cost.</p><p>This system works well for NADAC&#8217;s primary purpose: creating reliable, standardized pricing benchmarks. But it creates a practical challenge for the pharmacies that contribute the underlying data. While most pharmacies do use commercial drug databases as part of their pharmacy management systems, this data typically isn&#8217;t accessible in a format that allows easy price comparison analysis. The pack size information exists somewhere in their software, but pharmacists can&#8217;t readily extract it to perform their own NADAC comparisons.</p><p>The situation is frustrating: pharmacies provide the raw data that creates NADAC, but they still can&#8217;t easily use NADAC for competitive analysis. If I wanted to help the pharmacy manager, I would have to either pay for a license to a commercial drug database (which costs thousands of dollars per year) or somehow figure out a way to help them extract pack size data from their pharmacy management system and create a report that combines that data with the weekly updates from NADAC.</p><h2>Building better infrastructure</h2><p>Rather than working around these limitations, we should focus on building public infrastructure that serves the entire industry. Here are some potential approaches:</p><p><strong>Enhanced transparency in existing systems:</strong> NADAC could include both &#8220;per unit&#8221; and &#8220;<em>per package</em>&#8221; pricing in their data exports. This simple addition would allow users to directly compare prices they are paying per package without changing NADAC&#8217;s core methodology. Unfortunately, this type of change would require governance and approval and could potentially take years.</p><p><strong>Public pack size reference:</strong> An open database that correctly implements NCPDP standards, maintained collaboratively by industry participants and freely accessible to all market participants. This is an area where CodeRx and the surrounding community of pharmacists and pharmacy leaders could help. We&#8217;ve already started <a href="https://coderxio.substack.com/p/the-elusiveness-of-drug-package-size">working toward this goal</a>.</p><p><strong>Industry collaboration:</strong> Working groups focused on standardizing pack size calculations and making them publicly available, similar to how other industries manage reference data. FDA is the first organization that comes to mind to bear responsibility for including total pack size in its NDC Directory. It <a href="https://coderxio.substack.com/i/148375593/i-get-it-so-whats-the-problem">has all of the pieces of the puzzle</a> to calculate total pack size based on NCPDP standards and could save everyone else a lot of headache by just doing it centrally.  Or - perhaps NCPDP could take ownership of publishing NDC to pack size mapping data instead of just publishing guidelines on the topic.</p><h2>The path forward</h2><p>The goal isn&#8217;t to replace existing commercial databases&#8212;they provide valuable services beyond basic pack size calculations. Instead, we should reduce the industry&#8217;s dependence on proprietary databases for fundamental product information that enables basic price comparisons.</p><p>This would benefit everyone: pharmacies could make more informed purchasing decisions, researchers could conduct better analyses, policy makers could better understand market dynamics, and smaller market participants could compete more effectively.</p><p>NADAC has succeeded in bringing transparency to pharmaceutical pricing. Now we need to build the public data infrastructure that allows everyone to take full advantage of that transparency. This is not a problem with NADAC&#8212;it&#8217;s an opportunity to build something better for the entire industry.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The CodeRx Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><em>What is your experience with pharmaceutical pack size calculations and pricing analysis? Have you run into similar challenges with accessing basic product reference data? I&#8217;d love to hear from others navigating these issues.</em></p>]]></content:encoded></item><item><title><![CDATA[CodeRx Compendium update Q2 2025]]></title><description><![CDATA[New data marts: drug pricing, indications, and OTC label images]]></description><link>https://coderxio.substack.com/p/coderx-compendium-update-q2-2025</link><guid isPermaLink="false">https://coderxio.substack.com/p/coderx-compendium-update-q2-2025</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Tue, 17 Jun 2025 13:02:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!baS3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4637bb72-17f7-4825-9834-07020b8fa954_1745x981.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Another quarter, another refresh of the Compendium.</p><p>In case you don&#8217;t know, the Compendium is what we call our curated collection of <a href="https://coderx.io/data-marts">finished data marts</a> generated using <a href="https://coderx.io/sagerx">SageRx</a>. Essentially, they&#8217;re a dozen or so CSV files in a Google Drive folder that we update for free every quarter (plus, we archive and share the historical versions).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!baS3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4637bb72-17f7-4825-9834-07020b8fa954_1745x981.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!baS3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4637bb72-17f7-4825-9834-07020b8fa954_1745x981.png 424w, https://substackcdn.com/image/fetch/$s_!baS3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4637bb72-17f7-4825-9834-07020b8fa954_1745x981.png 848w, https://substackcdn.com/image/fetch/$s_!baS3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4637bb72-17f7-4825-9834-07020b8fa954_1745x981.png 1272w, https://substackcdn.com/image/fetch/$s_!baS3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4637bb72-17f7-4825-9834-07020b8fa954_1745x981.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!baS3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4637bb72-17f7-4825-9834-07020b8fa954_1745x981.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4637bb72-17f7-4825-9834-07020b8fa954_1745x981.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:425169,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://coderxio.substack.com/i/164695944?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4637bb72-17f7-4825-9834-07020b8fa954_1745x981.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!baS3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4637bb72-17f7-4825-9834-07020b8fa954_1745x981.png 424w, https://substackcdn.com/image/fetch/$s_!baS3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4637bb72-17f7-4825-9834-07020b8fa954_1745x981.png 848w, https://substackcdn.com/image/fetch/$s_!baS3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4637bb72-17f7-4825-9834-07020b8fa954_1745x981.png 1272w, https://substackcdn.com/image/fetch/$s_!baS3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4637bb72-17f7-4825-9834-07020b8fa954_1745x981.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Click the button below for free access to our data marts. Quarterly updates are provided for free - for more frequent (weekly) updates, please <a href="https://coderx.io/contact-us">contact us</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderx.io/data-marts&quot;,&quot;text&quot;:&quot;Access data marts&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderx.io/data-marts"><span>Access data marts</span></a></p><h2>What&#8217;s new this quarter?</h2><h3>Drug pricing</h3><p>We&#8217;ve always included NADAC as a data source, but have never published the transformed data as a data mart. We have contributed several enhancements to the raw NADAC data published weekly on the CMS website.</p><p>Continue reading below to learn about some of those enhancements.</p><p><a href="https://coderx.io/data-marts/nadac-current-and-historical">Check out the NADAC data marts</a></p><p><strong>De-duplicating row count while preserving the most useful data points</strong></p><p>Every week that a drug is included in the current NADAC release, another row is added to the data with a new &#8220;as of date&#8221;, but everything else usually remaining the same - even the price in many cases. For people that only care about price changes over time, this creates a massive amount of duplicate rows that need to be cleaned up before working with the data.</p><p>We create an easy-to-use, lightweight history of price changes for every NDC in NADAC. We also join in RxNorm RXCUIs and normalize related drug names of NDCs to make it possible to aggregate NADAC data by drug product or ingredient using an open, standardized drug terminology.</p><p><strong>Preserving recent prices for drugs that are not in the current week&#8217;s release</strong></p><p>While rows where the &#8220;as of date&#8221; from the most recent release are the most relevant for reimbursement activities, prices from a week or even a month ago might still be relevant for other uses. </p><p>We provide an easy-to-use view of the data that cleans this up and makes it easy to use only prices from the most recent release, from within the past 30 days, from within the past 90 days, etc.</p><p><strong>Handling what NADAC curators call &#8220;overwrites&#8221;</strong></p><p>Overwrites are when the &#8220;as of date&#8221; moves forward, but the &#8220;effective date&#8221; goes backward. In practice, these rows / prices are erased from ever being used for reimbursement, yet they remain in the data as artifacts you need to deal with. </p><p>We flag these rows and remove them to preserve a logical progression of prices over time.</p><h3>Drug indications</h3><p>RxClass is an incredible resource for drug classifications and hierarchies. However, it is only accessible via an API or an web-based graphical user interface (GUI). Or I guess RxNav-in-a-box, which is just a version of the web GUI run locally.</p><p>Some of the most useful relationships in RxClass are those that provide some insight into which drugs may treat (or prevent) which conditions. These come from a variety of sources and map to a variety of standard disease ontologies - effectively mapping standardized medication terminology to standardized disease terminology with relationships like may_treat, may_prevent, and ci_with (contraindicated with).</p><p>We make this useful drug indication mapping easy to use by providing it in a flat file format. We map from products to diseases via ingredient-level mappings provided by RxClass. We also make it easy to map from MeSH terminology for diseases to other standardized disease terminology, thereby extending the utility provided by RxClass.</p><p><a href="https://coderx.io/data-marts/clinical-products-to-diseases">Check out the drug interactions data mart</a></p><h3>OTC label images</h3><p>In previous releases, we have used our DailyMed transformation process to extract a mapping of prescription NDCs to label images, but this release also includes the equivalent for OTC NDCs to label images. There doesn&#8217;t seem to be as good of coverage for OTCs, and likely there are improvements that could be made to the code to handle OTC labels better - but this is just an effort to share what we have for now.</p><p><a href="https://coderx.io/data-marts/ndcs-to-label-images">Check out the label image data mart</a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderx.io/data-marts&quot;,&quot;text&quot;:&quot;Access data marts&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderx.io/data-marts"><span>Access data marts</span></a></p><h2>Why do we do this?</h2><p>We do this for several reasons.</p><h3>Building in public is the best way to build</h3><p>We want you to be able to actually put eyes / hands on the data we are working hard to transform into something greater than the sum of its parts. And we don&#8217;t expect you to run SageRx yourselves to do so&#8230; anymore&#8230; We think the more people exploring the data, the better. If we spent months developing a data mart and nobody ever looked at it, does it even matter?</p><h3>The dream of the 80s is alive in healthcare</h3><p>Why do we release these data marts as CSVs?</p><p>Flat files are gonna be around as long as faxing and paging are critical to parts of healthcare. They&#8217;re not inherently bad - they&#8217;re just not very flashy. However, they&#8217;re extremely versatile. Flat files (comma-separated value files, or CSVs) have the dual benefit of being easy for non-technical people to explore, and also trivial for technical people to ingest into data lakes or other data tools.</p><p>There are certainly more&#8230; modern ways for us to share this data with people. We have considered a cloud database or shared data workspace or even offering an API. We still may do some of these things in the near future. But for the time being, flat file are an easy common denominator that works for us and for most people we&#8217;ve asked.</p><h3>No money, no margin</h3><p>We put a lot of effort into developing these data marts, and it takes some effort to put together these quarterly releases. We think there is legitimate value for people to use these data marts for free if they are developing something new and need data to get started. Or perhaps for people doing historical research that doesn&#8217;t require frequent updates.</p><p>In full transparency, this also serves as a smooth on-ramp for someone who values the data but needs more frequent (weekly) updates to inquire about our services. For clients, we deliver these updates to an AWS s3 bucket on a weekly basis, provide data quality checks and ongoing support, and work closely to prioritize developing additional data marts that align with our roadmap.</p><p>If any of that sounds interesting to you, please <a href="https://coderx.io/contact-us">reach out and see how we can work together</a>. Supporting CodeRx helps us develop more data marts that can help others develop innovative and useful things.</p><h2>Contact us</h2><p>We hope you find these free quarterly data marts useful, as well as the <a href="https://coderx.io/sagerx">open-source development</a> we have done to produce them. If you have any questions, are interested in more frequent (weekly) updates and support, or are looking for consulting help, please <a href="https://coderx.io/contact-us">contact us</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Freely explore our free data marts for free]]></title><description><![CDATA[Try before you don't buy. Did we mention it&#8217;s free?]]></description><link>https://coderxio.substack.com/p/freely-explore-our-free-data-marts</link><guid isPermaLink="false">https://coderxio.substack.com/p/freely-explore-our-free-data-marts</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Thu, 29 May 2025 13:02:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pUyT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7260cd5-cca0-475a-848c-6b710152bd4f_2559x1396.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>&#128269; New on our website: Explore our data marts with an interactive table</strong></p><p>We&#8217;ve just shipped a small but mighty update to our <a href="https://coderx.io/data-marts">website</a> that makes it easier than ever to understand what&#8217;s inside our data marts.</p><p>You can now browse the <strong>first 10,000 rows of every data mart</strong> through a slick new <strong>interactive table</strong> powered by <a href="https://observablehq.com/d/c00d195d07662ed4">Observable</a>. No signup, no credentials, no SQL required &#8212; just click and explore. Whether you're a developer sizing up our schema or a data analyst trying to answer &#8220;Is this what I think it is?&#8221;, this feature gives you a quick, intuitive feel for how our data is structured and what it contains.</p><p>&#128279; You&#8217;ll find the interactive tables linked right from each <a href="https://coderx.io/data-marts">data mart page</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://coderx.io/data-marts/all-ndc-descriptions#block-1fb54c27e81e804f8a3fc5e9aa6da8c1" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pUyT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7260cd5-cca0-475a-848c-6b710152bd4f_2559x1396.png 424w, https://substackcdn.com/image/fetch/$s_!pUyT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7260cd5-cca0-475a-848c-6b710152bd4f_2559x1396.png 848w, https://substackcdn.com/image/fetch/$s_!pUyT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7260cd5-cca0-475a-848c-6b710152bd4f_2559x1396.png 1272w, https://substackcdn.com/image/fetch/$s_!pUyT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7260cd5-cca0-475a-848c-6b710152bd4f_2559x1396.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pUyT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7260cd5-cca0-475a-848c-6b710152bd4f_2559x1396.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7260cd5-cca0-475a-848c-6b710152bd4f_2559x1396.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:269547,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://coderx.io/data-marts/all-ndc-descriptions#block-1fb54c27e81e804f8a3fc5e9aa6da8c1&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://coderxio.substack.com/i/164282798?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7260cd5-cca0-475a-848c-6b710152bd4f_2559x1396.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pUyT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7260cd5-cca0-475a-848c-6b710152bd4f_2559x1396.png 424w, https://substackcdn.com/image/fetch/$s_!pUyT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7260cd5-cca0-475a-848c-6b710152bd4f_2559x1396.png 848w, https://substackcdn.com/image/fetch/$s_!pUyT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7260cd5-cca0-475a-848c-6b710152bd4f_2559x1396.png 1272w, https://substackcdn.com/image/fetch/$s_!pUyT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7260cd5-cca0-475a-848c-6b710152bd4f_2559x1396.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>This is part of our broader mission to make drug data more accessible, interoperable, and inspectable. We believe good data tools should feel like good software: fast, transparent, and easy to test-drive.</p><div><hr></div><p><strong>Coming soon: Q2 2025 data mart updates</strong></p><p>We're putting the final touches on our Q2 2025 refresh across all data marts &#8212; new data, new insights, and a few structural improvements. More on that soon. </p><p>Stay tuned &#128064;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The CodeRx Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[CodeRx Compendium update Q1 2025]]></title><description><![CDATA[The first data drop of 2025 introduces two new data marts: product synonyms and GTINs.]]></description><link>https://coderxio.substack.com/p/coderx-compendium-update-q1-2025</link><guid isPermaLink="false">https://coderxio.substack.com/p/coderx-compendium-update-q1-2025</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Thu, 06 Feb 2025 19:26:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EfEw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a4a18c-d5bc-4cbe-ad76-4ac1c0cce626_1419x823.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In addition to refreshing all of the <a href="https://coderx.io/data-marts">existing data marts</a> with data through the end of January 2025, this update to the open version of the CodeRx Compendium includes two new data marts: product synonyms and GTINs.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderx.io/data-marts&quot;,&quot;text&quot;:&quot;View data marts&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderx.io/data-marts"><span>View data marts</span></a></p><p>Plus, thanks to some <a href="https://github.com/coderxio/sagerx/pull/360">great work</a> by <a href="https://github.com/saywurdson">Kwasi Agyeman</a>, our <a href="http://coderx.io/data-marts/atc-codes-to-rxnorm-products">ATC codes to products</a> data mart has captured over 300 extra rows from the API.</p><p>We will continue to update these data marts for free on a quarterly basis. If you find them useful but need more frequent updates, please <a href="https://coderx.io/contact-us">contact us</a> and we will work with you to deliver what you need. If you want to leave us general feedback or request additional data marts, also feel free to <a href="https://coderx.io/contact-us">let us know</a> - we&#8217;d love to hear from you!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EfEw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a4a18c-d5bc-4cbe-ad76-4ac1c0cce626_1419x823.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EfEw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a4a18c-d5bc-4cbe-ad76-4ac1c0cce626_1419x823.png 424w, https://substackcdn.com/image/fetch/$s_!EfEw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a4a18c-d5bc-4cbe-ad76-4ac1c0cce626_1419x823.png 848w, https://substackcdn.com/image/fetch/$s_!EfEw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a4a18c-d5bc-4cbe-ad76-4ac1c0cce626_1419x823.png 1272w, https://substackcdn.com/image/fetch/$s_!EfEw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a4a18c-d5bc-4cbe-ad76-4ac1c0cce626_1419x823.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EfEw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a4a18c-d5bc-4cbe-ad76-4ac1c0cce626_1419x823.png" width="1419" height="823" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44a4a18c-d5bc-4cbe-ad76-4ac1c0cce626_1419x823.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:823,&quot;width&quot;:1419,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:135987,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EfEw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a4a18c-d5bc-4cbe-ad76-4ac1c0cce626_1419x823.png 424w, https://substackcdn.com/image/fetch/$s_!EfEw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a4a18c-d5bc-4cbe-ad76-4ac1c0cce626_1419x823.png 848w, https://substackcdn.com/image/fetch/$s_!EfEw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a4a18c-d5bc-4cbe-ad76-4ac1c0cce626_1419x823.png 1272w, https://substackcdn.com/image/fetch/$s_!EfEw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a4a18c-d5bc-4cbe-ad76-4ac1c0cce626_1419x823.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Q1 2025 CodeRx Compendium update.</figcaption></figure></div><h2>Product synonyms</h2><p>If you&#8217;re training a ML model to recognize fuzzy matches for names of drug products, this data mart could be useful. It contains synonyms of drug products from many different sources and maps each synonym to a drug product ID (RxNorm product-level RXCUI).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderx.io/data-marts/product-synonyms&quot;,&quot;text&quot;:&quot;Product synonyms mart&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderx.io/data-marts/product-synonyms"><span>Product synonyms mart</span></a></p><p>This data mart was originally created for a recent <a href="https://www.linkedin.com/posts/thomasvdc_its-hackathon-week-at-awell-and-my-team-activity-7241891203770642432--148/?utm_source=share&amp;utm_medium=member_ios&amp;rcm=ACoAAAykxdYBcmvB0v4YWwlm9L2FryNwv9EQIW0">Awell Health hackathon</a> with the goal of allowing patients to take a picture of their prescription and OTC bottles / packages and have AI identify the product either using the name or NDC and map it to a product-level RxNorm RXCUI. I was personally shocked and impressed at how well the demo worked. We&#8217;re now making this data available to everyone.</p><p>Here&#8217;s a link to the actual original <a href="https://drive.google.com/drive/folders/1rIoflj1BdlMF3xA1cpEd_cnpXtHCLuY8?usp=drive_link">data</a> used for the hackathon in 2024.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FIVY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7879272b-bc19-4bf1-9be8-00a2863eb64a_960x540.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FIVY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7879272b-bc19-4bf1-9be8-00a2863eb64a_960x540.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FIVY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7879272b-bc19-4bf1-9be8-00a2863eb64a_960x540.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FIVY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7879272b-bc19-4bf1-9be8-00a2863eb64a_960x540.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FIVY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7879272b-bc19-4bf1-9be8-00a2863eb64a_960x540.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FIVY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7879272b-bc19-4bf1-9be8-00a2863eb64a_960x540.jpeg" width="960" height="540" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7879272b-bc19-4bf1-9be8-00a2863eb64a_960x540.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:540,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;upload meds picture - review - save FHIR&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="upload meds picture - review - save FHIR" title="upload meds picture - review - save FHIR" srcset="https://substackcdn.com/image/fetch/$s_!FIVY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7879272b-bc19-4bf1-9be8-00a2863eb64a_960x540.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FIVY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7879272b-bc19-4bf1-9be8-00a2863eb64a_960x540.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FIVY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7879272b-bc19-4bf1-9be8-00a2863eb64a_960x540.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FIVY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7879272b-bc19-4bf1-9be8-00a2863eb64a_960x540.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Promotional image from the Awell Hackathon demo showing an example workflow. This demo utilized the product synonyms data mart, as well as a few others.</figcaption></figure></div><h2>GTINs</h2><p>This data mart is just an estimate of what a calculated GTIN (GTIN-14, specifically) should be be for any given NDC. It has not been validated and could be wrong for many reasons. Use at your own discretion but please <a href="https://coderx.io/contact-us">provide feedback</a> for ways it could be improved.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderx.io/data-marts/ndcs-to-gtins&quot;,&quot;text&quot;:&quot;NDCs to GTINs mart&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderx.io/data-marts/ndcs-to-gtins"><span>NDCs to GTINs mart</span></a></p><p>GTINs are important for track and trace (<a href="https://documents.gs1us.org/adobe/assets/deliver/urn:aaid:aem:98200fef-69f9-4b9a-a7e3-8062f55f3dd7/Applying-GS1-System-of-Standards-for-DSCSA-and-Serialized-Interoperable-Traceability-R1-3.pdf?_gl=1*hhyd9j*_gcl_au*OTA3OTEzMTk1LjE3MzExMjI1ODI">DSCSA</a>) as well as any sort of barcode-related medication workflows (dispensing cabinets, for instance). This data represents a &#8220;best-guess&#8221; approach (based on <a href="https://www.rxtrace.com/2017/03/how-to-properly-define-gtins-for-your-ndcs.html/">this guide</a>) for what a calculated GTIN should be for a given NDC, but manufacturers have some laterality in terms of <a href="https://www.rxtrace.com/2017/03/how-to-properly-define-gtins-for-your-ndcs.html/">using different digits</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xAfC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a18261e-4159-4f0b-9dde-8c17dec5de43_720x391.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xAfC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a18261e-4159-4f0b-9dde-8c17dec5de43_720x391.png 424w, https://substackcdn.com/image/fetch/$s_!xAfC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a18261e-4159-4f0b-9dde-8c17dec5de43_720x391.png 848w, https://substackcdn.com/image/fetch/$s_!xAfC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a18261e-4159-4f0b-9dde-8c17dec5de43_720x391.png 1272w, https://substackcdn.com/image/fetch/$s_!xAfC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a18261e-4159-4f0b-9dde-8c17dec5de43_720x391.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xAfC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a18261e-4159-4f0b-9dde-8c17dec5de43_720x391.png" width="720" height="391" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a18261e-4159-4f0b-9dde-8c17dec5de43_720x391.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:391,&quot;width&quot;:720,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:74593,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xAfC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a18261e-4159-4f0b-9dde-8c17dec5de43_720x391.png 424w, https://substackcdn.com/image/fetch/$s_!xAfC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a18261e-4159-4f0b-9dde-8c17dec5de43_720x391.png 848w, https://substackcdn.com/image/fetch/$s_!xAfC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a18261e-4159-4f0b-9dde-8c17dec5de43_720x391.png 1272w, https://substackcdn.com/image/fetch/$s_!xAfC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a18261e-4159-4f0b-9dde-8c17dec5de43_720x391.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Example of a FDA NDC embedded within a GTIN14. Image from the GS1 implementation guideline document.</figcaption></figure></div><h2>Talk to us</h2><p>More documentation about most of these data marts can be found <a href="https://coderx.io/data-marts">on our website</a>. If you have ideas for other data marts or if you find this data useful and would like updated data delivered on a weekly basis, please <a href="https://coderx.io/contact-us">contact us</a> and we will work with you. Please let us know if you have any questions or feedback and thanks for taking the time to read this!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Working with drug product data]]></title><description><![CDATA[If you only read one article about drug product data today, make it this one.]]></description><link>https://coderxio.substack.com/p/working-with-drug-product-data</link><guid isPermaLink="false">https://coderxio.substack.com/p/working-with-drug-product-data</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Tue, 14 Jan 2025 15:13:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xYvj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa09d1e0-bcfe-4cdc-a370-a0014204aef6_1125x750.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Drug products are a concept foundational to working with drug data in almost any capacity. They are the hub around which many types of analyses pertinent to pharmacy and the medication use process are organized. Drug information databases all have their own proprietary way of working with drug products, but the fundamental concepts are all the same. In this article, we explain those fundamental concepts in plain English and connect them with open standard identifiers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xYvj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa09d1e0-bcfe-4cdc-a370-a0014204aef6_1125x750.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xYvj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa09d1e0-bcfe-4cdc-a370-a0014204aef6_1125x750.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xYvj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa09d1e0-bcfe-4cdc-a370-a0014204aef6_1125x750.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xYvj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa09d1e0-bcfe-4cdc-a370-a0014204aef6_1125x750.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xYvj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa09d1e0-bcfe-4cdc-a370-a0014204aef6_1125x750.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xYvj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa09d1e0-bcfe-4cdc-a370-a0014204aef6_1125x750.jpeg" width="1125" height="750" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa09d1e0-bcfe-4cdc-a370-a0014204aef6_1125x750.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:750,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:81150,&quot;alt&quot;:&quot;Close-up of red tablets surrounding a single white pill on a blue surface. Stock Photo&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Close-up of red tablets surrounding a single white pill on a blue surface. Stock Photo" title="Close-up of red tablets surrounding a single white pill on a blue surface. Stock Photo" srcset="https://substackcdn.com/image/fetch/$s_!xYvj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa09d1e0-bcfe-4cdc-a370-a0014204aef6_1125x750.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xYvj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa09d1e0-bcfe-4cdc-a370-a0014204aef6_1125x750.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xYvj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa09d1e0-bcfe-4cdc-a370-a0014204aef6_1125x750.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xYvj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa09d1e0-bcfe-4cdc-a370-a0014204aef6_1125x750.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Drug products can be both the concept of and physical manifestation of a medication that a patient could take.</figcaption></figure></div><h2>What is a drug product?</h2><p>The <em>idea</em> or <em>concept</em> of a drug product requires three things:</p><ol><li><p>Ingredient - i.e. metformin</p></li><li><p>Strength - i.e. 500 mg</p></li><li><p>Dose form - i.e. tablet</p></li></ol><p>These are the three essential pieces of information required to hold the idea in your head about a drug product that could be prescribed by a provider or taken by a patient. Lose any one of these data points and you can no longer identify a drug product. A patient can&#8217;t <em>take</em> &#8220;metformin 500 mg&#8221; or &#8220;500 mg tablet&#8221; - you need all three parts (&#8220;metformin 500 mg tablet&#8221;).</p><h2>Single-ingredient products</h2><p>The simplest example of a drug product would probably be - you guessed it -  metformin 500 mg oral tablet. You can see we have an ingredient (metformin), a strength (500 mg), and a dose form (oral tablet). But as soon as you get out of the realm of simple examples, it can get complicated pretty quickly - as we will see next.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-QLA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-QLA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-QLA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-QLA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-QLA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-QLA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg" width="865" height="293" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:293,&quot;width&quot;:865,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-QLA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-QLA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-QLA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-QLA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A simple, single-ingredient drug product example. The ingredient is metformin. The strength is 500 mg. The dose form is tablet.</figcaption></figure></div><h2>Multiple-ingredient products</h2><p>For a slightly more complex example, it&#8217;s very common for a drug product to have multiple ingredients with different strengths. One example of this is sitagliptin 50 mg / metformin 500 mg oral tablet. This is a single drug <em>product</em> with multiple different <em>ingredients</em> - which themselves each have different <em>strengths</em>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BLii!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c224c6-b49f-4b23-8e35-4296a4615da4_764x511.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BLii!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c224c6-b49f-4b23-8e35-4296a4615da4_764x511.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BLii!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c224c6-b49f-4b23-8e35-4296a4615da4_764x511.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BLii!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c224c6-b49f-4b23-8e35-4296a4615da4_764x511.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BLii!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c224c6-b49f-4b23-8e35-4296a4615da4_764x511.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BLii!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c224c6-b49f-4b23-8e35-4296a4615da4_764x511.jpeg" width="764" height="511" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c3c224c6-b49f-4b23-8e35-4296a4615da4_764x511.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:511,&quot;width&quot;:764,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BLii!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c224c6-b49f-4b23-8e35-4296a4615da4_764x511.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BLii!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c224c6-b49f-4b23-8e35-4296a4615da4_764x511.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BLii!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c224c6-b49f-4b23-8e35-4296a4615da4_764x511.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BLii!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c224c6-b49f-4b23-8e35-4296a4615da4_764x511.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Slightly more complex, multiple-ingredient drug product example. The ingredient is sitagliptin / metformin. The strength of sitagliptin is 50 mg. The strength of metformin is 500 mg. The dose form is tablet.</figcaption></figure></div><h2>Branded products</h2><p>Another wrinkle is that we need to also account for branded products which can have financial and regulatory / operational implications, but are otherwise the same &#8220;clinical drug&#8221; behind all that branding. Below is an example of Janumet, which is a branded equivalent to the now generically available sitagliptin / metformin drug product above.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yU0G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04448ecf-6db9-48ca-80a4-49cfd92ca2d9_1063x357.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yU0G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04448ecf-6db9-48ca-80a4-49cfd92ca2d9_1063x357.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yU0G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04448ecf-6db9-48ca-80a4-49cfd92ca2d9_1063x357.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yU0G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04448ecf-6db9-48ca-80a4-49cfd92ca2d9_1063x357.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yU0G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04448ecf-6db9-48ca-80a4-49cfd92ca2d9_1063x357.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yU0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04448ecf-6db9-48ca-80a4-49cfd92ca2d9_1063x357.jpeg" width="1063" height="357" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/04448ecf-6db9-48ca-80a4-49cfd92ca2d9_1063x357.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:357,&quot;width&quot;:1063,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yU0G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04448ecf-6db9-48ca-80a4-49cfd92ca2d9_1063x357.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yU0G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04448ecf-6db9-48ca-80a4-49cfd92ca2d9_1063x357.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yU0G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04448ecf-6db9-48ca-80a4-49cfd92ca2d9_1063x357.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yU0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04448ecf-6db9-48ca-80a4-49cfd92ca2d9_1063x357.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The branded drug product equivalent of sitagliptin / metformin. It is the same &#8220;clinical drug&#8221; as the previous example, but branded as &#8220;Janumet&#8221;.</figcaption></figure></div><h2>Packs and kits</h2><p>We haven&#8217;t even scratched the surface of the most complex drug products which are known as &#8220;packs&#8221; or &#8220;kits&#8221;. These are drug products packaged together with OTHER drug products. These are things like oral contraceptives (birth control) where the package you pick up at the pharmacy actually has two separate drug products combined together in a blister pack. Perhaps 21 tablets of one drug product and 7 tablets of another to make up a full 28 day supply.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i1mU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ed348c-7e00-487e-82ae-da37cfd6b85c_1012x1006.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i1mU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ed348c-7e00-487e-82ae-da37cfd6b85c_1012x1006.jpeg 424w, https://substackcdn.com/image/fetch/$s_!i1mU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ed348c-7e00-487e-82ae-da37cfd6b85c_1012x1006.jpeg 848w, https://substackcdn.com/image/fetch/$s_!i1mU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ed348c-7e00-487e-82ae-da37cfd6b85c_1012x1006.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!i1mU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ed348c-7e00-487e-82ae-da37cfd6b85c_1012x1006.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i1mU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ed348c-7e00-487e-82ae-da37cfd6b85c_1012x1006.jpeg" width="1012" height="1006" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5ed348c-7e00-487e-82ae-da37cfd6b85c_1012x1006.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1006,&quot;width&quot;:1012,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!i1mU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ed348c-7e00-487e-82ae-da37cfd6b85c_1012x1006.jpeg 424w, https://substackcdn.com/image/fetch/$s_!i1mU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ed348c-7e00-487e-82ae-da37cfd6b85c_1012x1006.jpeg 848w, https://substackcdn.com/image/fetch/$s_!i1mU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ed348c-7e00-487e-82ae-da37cfd6b85c_1012x1006.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!i1mU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ed348c-7e00-487e-82ae-da37cfd6b85c_1012x1006.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">In this &#8220;pack&#8221; example, there are actually 3 separate drug products contained in one blister pack - which is not the same as one drug product with multiple ingredients.</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fZe_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce9132b-c157-4f8c-9969-0b7812918973_1380x679.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fZe_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce9132b-c157-4f8c-9969-0b7812918973_1380x679.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fZe_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce9132b-c157-4f8c-9969-0b7812918973_1380x679.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fZe_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce9132b-c157-4f8c-9969-0b7812918973_1380x679.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fZe_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce9132b-c157-4f8c-9969-0b7812918973_1380x679.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fZe_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce9132b-c157-4f8c-9969-0b7812918973_1380x679.jpeg" width="1380" height="679" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ce9132b-c157-4f8c-9969-0b7812918973_1380x679.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:679,&quot;width&quot;:1380,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fZe_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce9132b-c157-4f8c-9969-0b7812918973_1380x679.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fZe_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce9132b-c157-4f8c-9969-0b7812918973_1380x679.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fZe_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce9132b-c157-4f8c-9969-0b7812918973_1380x679.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fZe_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce9132b-c157-4f8c-9969-0b7812918973_1380x679.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Another example of a &#8220;pack&#8221; containing three different drug products. While you could also get prescribed these three products separately, this is one convenient package that can be prescribed without needing to prescribe three different things.</figcaption></figure></div><p>Packs are different from multiple-ingredient drug products because within the outer saleable package, not all the pills have the same medication in them. Conversely, even though a bottle of a multiple-ingredient drug product has multiple ingredients, all of the pills in the bottle contain the same ingredients.</p><p>A kit can be even more complex with perhaps several vials of different drug products combined in one package along with alcohol wipes and sterile water and perhaps other things. We&#8217;re not going to get into those complex examples here, but dealing with kits is important for any complete understanding of drug products.</p><h2>From products to packaging</h2><p>This is all fine and good, but a patient can&#8217;t ingest the <em>idea</em> or <em>concept </em>of a drug product. They have to take an actual, physical medication. The missing pieces needed to go from &#8220;product&#8221; to &#8220;package&#8221; are drug manufacturer (who made this drug product) and drug packaging (how this drug product is available for pharmacies to purchase). This is where the National Drug Code (NDC) comes into play.</p><p>We aren&#8217;t going to go in depth into NDCs or drug packaging considerations here because it&#8217;s enough of a topic for an entirely separate article. However, in all the examples above, you will notice that each label has an NDC on the packaging. Below is an example from the first drug product where the NDC is 57664-397-51.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-QLA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-QLA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-QLA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-QLA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-QLA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-QLA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg" width="865" height="293" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:293,&quot;width&quot;:865,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-QLA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-QLA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-QLA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-QLA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e35239d-c13e-46ef-b121-432fe5f748d1_865x293.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Note the NDC at the top. NDC 57664-397-51.</figcaption></figure></div><p>The NDC is a drug identifier on packaging for drug products. By itself, it is far too specific and not nearly standardized enough to be useful for most analytical purposes. However, mapping the NDC to a drug terminology unlocks a lot of useful things you could do using drug data. For instance, you could aggregate all drug claims by drug product or even drug class. The first step of doing this is mapping NDCs to a drug product <em>concept</em> like we reviewed above.</p><h2>CodeRx drug product data</h2><p>We&#8217;ve been developing <a href="https://coderx.io/data-marts">CodeRx data marts</a> to make it easier to work with drug products. The main data mart relevant to this particular article is aptly named &#8220;<a href="https://coderx.io/data-marts/products">products</a>&#8221;. We can easily find all generic single-ingredient metformin products with a dose form of tablet. Note that the identifier for our product in question (metformin 500 mg tablet) is 861007. We leverage open standard identifiers from public data sources such as RxNorm wherever possible.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R2hD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be6477-e15e-4b8c-94e9-0999fd949290_1096x517.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R2hD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be6477-e15e-4b8c-94e9-0999fd949290_1096x517.png 424w, https://substackcdn.com/image/fetch/$s_!R2hD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be6477-e15e-4b8c-94e9-0999fd949290_1096x517.png 848w, https://substackcdn.com/image/fetch/$s_!R2hD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be6477-e15e-4b8c-94e9-0999fd949290_1096x517.png 1272w, https://substackcdn.com/image/fetch/$s_!R2hD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be6477-e15e-4b8c-94e9-0999fd949290_1096x517.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R2hD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be6477-e15e-4b8c-94e9-0999fd949290_1096x517.png" width="1096" height="517" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91be6477-e15e-4b8c-94e9-0999fd949290_1096x517.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:517,&quot;width&quot;:1096,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91608,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!R2hD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be6477-e15e-4b8c-94e9-0999fd949290_1096x517.png 424w, https://substackcdn.com/image/fetch/$s_!R2hD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be6477-e15e-4b8c-94e9-0999fd949290_1096x517.png 848w, https://substackcdn.com/image/fetch/$s_!R2hD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be6477-e15e-4b8c-94e9-0999fd949290_1096x517.png 1272w, https://substackcdn.com/image/fetch/$s_!R2hD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be6477-e15e-4b8c-94e9-0999fd949290_1096x517.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The CodeRx products data mart. Note the identifier for metformin 500 mg tablets is 861007 - based on the open standard ontology RxNorm.</figcaption></figure></div><p>Knowing the product identifier for this specific drug product allows us to use a second data mart to find <a href="https://coderx.io/data-marts/all-ndc-descriptions">all NDCs</a> that map to that drug product. We found our example NDC (57664-397-51 - or 57664039751 in NDC11 format) in the list as shown below. The fda_description column hints at the fact that we not only look for NDCs in RxNorm - <a href="https://coderx.io/source-data">we also pull NDCs directly from the FDA</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KiJQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302477df-d45e-4214-9d3c-666a2b370d5c_1094x692.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KiJQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302477df-d45e-4214-9d3c-666a2b370d5c_1094x692.png 424w, https://substackcdn.com/image/fetch/$s_!KiJQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302477df-d45e-4214-9d3c-666a2b370d5c_1094x692.png 848w, https://substackcdn.com/image/fetch/$s_!KiJQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302477df-d45e-4214-9d3c-666a2b370d5c_1094x692.png 1272w, https://substackcdn.com/image/fetch/$s_!KiJQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302477df-d45e-4214-9d3c-666a2b370d5c_1094x692.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KiJQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302477df-d45e-4214-9d3c-666a2b370d5c_1094x692.png" width="1094" height="692" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/302477df-d45e-4214-9d3c-666a2b370d5c_1094x692.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:692,&quot;width&quot;:1094,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:163930,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KiJQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302477df-d45e-4214-9d3c-666a2b370d5c_1094x692.png 424w, https://substackcdn.com/image/fetch/$s_!KiJQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302477df-d45e-4214-9d3c-666a2b370d5c_1094x692.png 848w, https://substackcdn.com/image/fetch/$s_!KiJQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302477df-d45e-4214-9d3c-666a2b370d5c_1094x692.png 1272w, https://substackcdn.com/image/fetch/$s_!KiJQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302477df-d45e-4214-9d3c-666a2b370d5c_1094x692.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The CodeRx NDC data mart. These NDCs are all mapped to the same drug product of metformin 500 mg tablet. These NDCs are aggregated from 5 different data sources. Note that we found the specific NDC in this data mart </figcaption></figure></div><p>In practice, we would more likely <a href="https://coderx.io/data-marts/all-ndc-descriptions">start with an NDC</a> and map it to the associated <a href="https://coderx.io/data-marts/products">drug product identifier</a>, but given this article is all about <a href="https://coderx.io/data-marts/products">drug products</a>, it made more sense to do it this way.</p><div class="pullquote"><p>All CodeRx data marts are <a href="https://coderx.io/data-marts">available for free</a> and updated quarterly.</p><p>If you would like more frequent (weekly) updates, <a href="https://coderx.io/contact-us">please contact us</a>.</p></div><p>We invite you to explore our drug product data further. See if you can do a similar exercise as above with the multiple-ingredient drug product or one of the pack examples from the beginning. All CodeRx data marts are <a href="https://coderx.io/data-marts">available for free</a> and updated quarterly. If you would like more frequent (weekly) updates, <a href="https://coderx.io/contact-us">please contact us</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderx.io/data-marts&quot;,&quot;text&quot;:&quot;View all data marts&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderx.io/data-marts"><span>View all data marts</span></a></p><p>Drug products are only one foundational aspect of working with drug data. Subscribe and read along as we continue to write about our strange obsession with drug data and how we are making it easier to work with.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[The problem with drug information]]></title><description><![CDATA[The unfair choice between not easy to use and not easy to afford.]]></description><link>https://coderxio.substack.com/p/the-problem-with-drug-information</link><guid isPermaLink="false">https://coderxio.substack.com/p/the-problem-with-drug-information</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Wed, 04 Dec 2024 19:29:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zmOV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e63b7e-05b7-4949-8f87-b3da0a91ba8b_750x500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I remember years ago hearing for the first time that in order to know how much drugs cost, people had to pay for a license to a drug information provider. And I don&#8217;t mean &#8220;how much do drugs cost with a GoodRx coupon&#8221; &#8212; I mean how much does it generally cost a pharmacy to purchase a bottle of a specific medication product.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zmOV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e63b7e-05b7-4949-8f87-b3da0a91ba8b_750x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zmOV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e63b7e-05b7-4949-8f87-b3da0a91ba8b_750x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zmOV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e63b7e-05b7-4949-8f87-b3da0a91ba8b_750x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zmOV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e63b7e-05b7-4949-8f87-b3da0a91ba8b_750x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zmOV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e63b7e-05b7-4949-8f87-b3da0a91ba8b_750x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zmOV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e63b7e-05b7-4949-8f87-b3da0a91ba8b_750x500.jpeg" width="750" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16e63b7e-05b7-4949-8f87-b3da0a91ba8b_750x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:750,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:54525,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zmOV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e63b7e-05b7-4949-8f87-b3da0a91ba8b_750x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zmOV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e63b7e-05b7-4949-8f87-b3da0a91ba8b_750x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zmOV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e63b7e-05b7-4949-8f87-b3da0a91ba8b_750x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zmOV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16e63b7e-05b7-4949-8f87-b3da0a91ba8b_750x500.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>To me, that sounded kind of like if you needed to know how much a bottle of Tylenol cost, and your only option was to pay a significant amount of money to a company for a license to a product that provides pricing information. Something just felt bizarre or wrong about the need for people to pay to know what drugs cost. </p><p>This may be more of an issue with drug pricing overall (which I will definitely not get into here), but it just left a weird taste in my mouth. In general, I think I took offense to the notion that there should be a price barrier at all for people to have easy access to important information.</p><p>More recently, I led a team to develop a piece of software that depended on drug data. When we looked around for options to source that drug data, none of them met all three of our criteria: </p><ol><li><p>easy to use off the shelf,</p></li><li><p>well trusted and supported by a community, and</p></li><li><p>within our budget. </p></li></ol><p>Before we could even begin focusing on the potentially innovative part of our project, we had to build a data pipeline from scratch just to create a local database that contained the data we needed.</p><h2>Open source exploration</h2><p>Of course we searched for open-source solutions to our problems as many people in our position would try. Most of the free options were open-source repositories that might tackle one specific problem in a very narrow or brittle way. Many had become stagnant &#8212; with years since the last commit to the repo. Few of them made it easy for developers to contribute to the project by extending the open-source framework with their own additional use case or feature. None of them seemed to have a community of people that agree it&#8217;s a good option as a general source of drug information. </p><p>Another thing I was personally stubborn about is that any solution had to be in a modern data language like Python or heavily SQL-centric. Selfishly, these languages are my comfort zone; but I also knew that they are languages that a lot of people know. We may have ruled some useful options out because of this self-imposed limitation.</p><h2>Commercial options</h2><p>Commercial options weren&#8217;t even a consideration because their price tags were in the tens of thousands of dollars per year. Thinking about this from the perspective of an early stage health tech startup or a pharmacy data analyst or researcher without considerable funding, it feels like a barrier to entry that does not need to be so high.</p><p>Pretty much all of what we needed for our project was free for the taking from government-provided data sources &#8212; if we could figure out how to work with them. I knew that FDA&#8217;s NDC Directory and NLM&#8217;s RxNorm were the two main sources, but didn&#8217;t have a ton of experience working with either of them. So it seemed like our options were paying a lot of money we didn&#8217;t have&#8230; or starting from scratch.</p><h2>Starting from scratch</h2><p>I assume drug data is not unique in the fact that it&#8217;s a source of data provided freely by the government that is well-intentioned but not easy to work with. We had to do a decent amount of background research just to figure out which data points come from which data sources. Once we had a grasp on that, we had to figure out how to work with the wide variety of file types and formats.</p><p>For us, the first milestone was learning how to re-organize RxNorm from its three oddly named tables into a shape that made common sense to our clinical minds that were used to working with normalized data in relational databases. It meant doing a lot of SQL query writing just to get started, as well as becoming an expert in SABs and TTYs and relationships and attributes. If you&#8217;ve worked with RxNorm before, you may have been through all this yourself.</p><p>I want to be clear that I&#8217;m not trying to say these tasks are impossible to do, or that we are the first to do them. It just seems just odd that nobody has already packaged this up in a way that most people agree is the right way to essentially reconstitute RxNorm into a more accessible format. We did this for ourselves for our specific software development project, and I guess this is where most work with RxNorm probably ends. In other words, I believe people re-invent the wheel over and over again just to get RxNorm up and working they way they want it to work for a very specific use case. And there&#8217;s no guarantee that my interpretation of RxNorm is the same as yours.</p><h2>The best of all worlds</h2><p>It seemed like there should be a solution that was cheaper than a commercial database, easier to get started with than using raw data, and had an open source community supporting it. After completing our project for the ONC contest (and winning first prize - no big deal), we set out to build such a thing. Three years later, I think we&#8217;re getting close. We&#8217;ve built a stable data pipeline to not only pull raw data from all these important sources, but also made it easy to transform the data into useful tables using modern data engineering practices. This is all available right now 100% open source on <a href="https://github.com/coderxio/sagerx">GitHub</a>.</p><p>One thing we&#8217;ve struggled with is making our data stupidly easy for people to explore and use. So without overthinking it any longer, <strong>I just loaded all of our currently available data marts to a <a href="https://drive.google.com/drive/folders/1dWuEXjno_02sAzkzSJM4IR4DW1Q7smsK">Google Drive folder</a></strong>. I will try to update this on a quarterly basis for free. If you would benefit from more frequent updates or have questions about this, please <a href="https://coderx.io/contact-us">contact us</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://drive.google.com/drive/folders/1dWuEXjno_02sAzkzSJM4IR4DW1Q7smsK&quot;,&quot;text&quot;:&quot;Explore the data&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://drive.google.com/drive/folders/1dWuEXjno_02sAzkzSJM4IR4DW1Q7smsK"><span>Explore the data</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ed5k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F565904d4-83c1-4deb-a657-662e629c19af_1025x685.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ed5k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F565904d4-83c1-4deb-a657-662e629c19af_1025x685.png 424w, https://substackcdn.com/image/fetch/$s_!Ed5k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F565904d4-83c1-4deb-a657-662e629c19af_1025x685.png 848w, https://substackcdn.com/image/fetch/$s_!Ed5k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F565904d4-83c1-4deb-a657-662e629c19af_1025x685.png 1272w, https://substackcdn.com/image/fetch/$s_!Ed5k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F565904d4-83c1-4deb-a657-662e629c19af_1025x685.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ed5k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F565904d4-83c1-4deb-a657-662e629c19af_1025x685.png" width="1025" height="685" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/565904d4-83c1-4deb-a657-662e629c19af_1025x685.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:685,&quot;width&quot;:1025,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:63144,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ed5k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F565904d4-83c1-4deb-a657-662e629c19af_1025x685.png 424w, https://substackcdn.com/image/fetch/$s_!Ed5k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F565904d4-83c1-4deb-a657-662e629c19af_1025x685.png 848w, https://substackcdn.com/image/fetch/$s_!Ed5k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F565904d4-83c1-4deb-a657-662e629c19af_1025x685.png 1272w, https://substackcdn.com/image/fetch/$s_!Ed5k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F565904d4-83c1-4deb-a657-662e629c19af_1025x685.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Some useful data marts to call out:</p><ul><li><p><strong>products:</strong> all RxNorm products with product-level details such as a brand vs generic flag, ingredients, dose forms, and normalized description</p></li><li><p><strong>all_ndc_descriptions:</strong> NDCs consolidated from five different open sources of drug data, mapped to RxNorm product codes and any available RxNorm or FDA descriptions of the NDC</p></li><li><p><strong>ndcs_to_label_images:</strong> a mapping of DailyMed label images at the NDC level &#8212;this is something you can&#8217;t get from any other open source</p></li><li><p><strong>ndc_associations:</strong> inner-outer NDC packaging associations parsed from the FDA NDC Directory</p></li><li><p><strong>pack_size:</strong> my first attempt at parsing total pack size information from the FDA NDC Directory, including innermost and outermost packaging units</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://drive.google.com/drive/folders/1dWuEXjno_02sAzkzSJM4IR4DW1Q7smsK&quot;,&quot;text&quot;:&quot;View all data marts&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://drive.google.com/drive/folders/1dWuEXjno_02sAzkzSJM4IR4DW1Q7smsK"><span>View all data marts</span></a></p><p>More documentation about most of these data marts can be found <a href="https://coderx.io/data-marts">on our website</a>. If you have ideas for other data marts or if you find this data useful and would like updated data delivered on a weekly basis, please <a href="https://coderx.io/contact-us">contact us</a> and we will work with you. Please let us know if you have any questions and thanks for taking the time to read this!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[What information can you get from open drug data?]]></title><description><![CDATA[More than you might think...]]></description><link>https://coderxio.substack.com/p/what-information-can-you-get-from</link><guid isPermaLink="false">https://coderxio.substack.com/p/what-information-can-you-get-from</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Thu, 21 Nov 2024 18:15:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jE4l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f88f3db-d299-4b00-aaaf-6bdbc7ef0b95_1369x912.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Open drug data is a powerful resource for healthcare, pharmacy, and research professionals. While it has some gaps, it serves as a foundation for innovation, providing key insights without the barriers of proprietary systems. With the right tools to fill in these gaps, open drug data can rival &#8212; and even surpass &#8212; commercial databases in accessibility, interoperability, and fostering innovation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jE4l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f88f3db-d299-4b00-aaaf-6bdbc7ef0b95_1369x912.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jE4l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f88f3db-d299-4b00-aaaf-6bdbc7ef0b95_1369x912.png 424w, https://substackcdn.com/image/fetch/$s_!jE4l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f88f3db-d299-4b00-aaaf-6bdbc7ef0b95_1369x912.png 848w, https://substackcdn.com/image/fetch/$s_!jE4l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f88f3db-d299-4b00-aaaf-6bdbc7ef0b95_1369x912.png 1272w, https://substackcdn.com/image/fetch/$s_!jE4l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f88f3db-d299-4b00-aaaf-6bdbc7ef0b95_1369x912.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jE4l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f88f3db-d299-4b00-aaaf-6bdbc7ef0b95_1369x912.png" width="1369" height="912" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f88f3db-d299-4b00-aaaf-6bdbc7ef0b95_1369x912.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:912,&quot;width&quot;:1369,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2027437,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jE4l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f88f3db-d299-4b00-aaaf-6bdbc7ef0b95_1369x912.png 424w, https://substackcdn.com/image/fetch/$s_!jE4l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f88f3db-d299-4b00-aaaf-6bdbc7ef0b95_1369x912.png 848w, https://substackcdn.com/image/fetch/$s_!jE4l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f88f3db-d299-4b00-aaaf-6bdbc7ef0b95_1369x912.png 1272w, https://substackcdn.com/image/fetch/$s_!jE4l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f88f3db-d299-4b00-aaaf-6bdbc7ef0b95_1369x912.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">What&#8217;s this pill?</figcaption></figure></div><p>In this article, we explore the value of open drug data and how it helps answer critical questions with drug information.</p><h2>What is this drug product?</h2><p>One of the core strengths of open drug data is its ability to identify and classify drug products accurately. A prime example of this is <strong>RxNorm</strong>, an open standard maintained by the National Library of Medicine. RxNorm&#8217;s structured data includes:</p><ul><li><p><strong>SCD (Semantic Clinical Drug)</strong>: Clinical drug descriptions, such as "Atorvastatin 10 mg Oral Tablet."</p></li><li><p><strong>SBD (Semantic Branded Drug)</strong>: Branded drug representations, like "Lipitor 10 mg Oral Tablet."</p></li><li><p><strong>GPCK / BPCK (Generic Pack / Branded Pack)</strong>: Packaged drug groupings, such as a "14-count blister pack of Omeprazole."</p></li></ul><p>These term types make it easy to understand what a drug is, its components, and how it might be grouped or packaged. The use of standardized terminology in open drug data ensures that users are not locked into proprietary formats, allowing for easier integration across systems.</p><h2>How is it available?</h2><p>Another question open drug data addresses is: how is this drug available to purchase? Is it available as an injectable product? Does it come as a 100-count bottle? A 1000-count bottle?</p><p>The <strong>NDC (National Drug Code) directory</strong> is a robust source of information for current drug products on the market. For those who need historical insights &#8212; such as discontinued drugs &#8212; <strong>RxNorm Historical</strong> via RxClass provides a more complete picture.</p><p>Additionally, details like <strong>pack size</strong> &#8212; whether a drug is sold in a 1000-count bottle versus a 100-count bottle &#8212; can have significant implications for purchasing and cost analysis. Open drug data offers many of these details, although it may require some effort to extract and utilize them fully.</p><h2>What does it cost?</h2><p>Pricing is a critical question in the world of drug data, and open resources provide important tools for understanding this aspect. While open drug data does not include <strong>AWP (Average Wholesale Price)</strong> &#8212; a commonly cited but highly criticized figure for its lack of transparency &#8212; it does offer more reliable alternatives, such as:</p><ul><li><p><strong>NADAC (National Average Drug Acquisition Cost)</strong>: Reflects the average price paid by retail pharmacies for prescription drugs.</p></li><li><p><strong>ASP (Average Sales Price)</strong>: Used in Medicare Part B reimbursement, showing real-world prices rather than inflated estimates.</p></li></ul><p>These pricing benchmarks are free from the "shell game" often associated with intentionally obfuscated pricing models, giving users a clearer and more trustworthy view of some aspects of drug costs.</p><h2>Is it equivalent to anything else?</h2><p>Determining whether a drug product is equivalent to another is essential in clinical and regulatory settings. Open drug data excels in this area with resources such as:</p><ul><li><p><strong>Orange Book</strong>: Published by the FDA, this resource lists therapeutic equivalence evaluations, enabling users to identify generic alternatives for branded drugs.</p></li><li><p><strong>RxNorm product codes</strong>: These standardized identifiers make it easy to link drugs across systems, ensuring consistency and clarity.</p></li><li><p><strong>FDA pack size information</strong>: Details about packaging and dose form help ensure accurate comparisons, such as whether two products with the same active ingredient are sold in equivalent pack sizes.</p></li></ul><p>These tools empower users to assess equivalencies effectively without relying on proprietary systems.</p><h2>Closing the gaps</h2><p>While open drug data provides a strong foundation, there are areas where it can fall short. This is where innovative solutions step in to bridge the gaps. By enhancing open data with features like:</p><ul><li><p><strong>Improved accessibility</strong>: Making the data easier to access and use for all stakeholders.</p></li><li><p><strong>Interoperability</strong>: Ensuring seamless integration across systems and platforms.</p></li><li><p><strong>Innovation potential</strong>: Leveraging open data to power new tools and insights that proprietary systems can&#8217;t offer.</p></li></ul><p>These enhancements unlock the full value of open drug data, empowering organizations to reduce dependency on costly, restrictive commercial databases while driving progress in the industry.</p><h2>Conclusion</h2><p>Open drug data has tremendous potential to transform how we access and use drug information. By building on its strengths and addressing its gaps, we can create a future where drug data is more accessible, interoperable, and innovative.</p><p>If you&#8217;re looking for ways to maximize the power of open drug data, let&#8217;s connect &#8212; I&#8217;d love to help you take the next step!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderx.io/contact-us&quot;,&quot;text&quot;:&quot;Contact us&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderx.io/contact-us"><span>Contact us</span></a></p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[The elusiveness of drug package size data]]></title><description><![CDATA[It's weirdly hard to know how much drug product is inside a given drug package. We dive into why it's challenging and how we plan to make it a lot easier.]]></description><link>https://coderxio.substack.com/p/the-elusiveness-of-drug-package-size</link><guid isPermaLink="false">https://coderxio.substack.com/p/the-elusiveness-of-drug-package-size</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Mon, 09 Sep 2024 13:20:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QLzG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835f7eeb-1861-4899-beb0-8dda41e1e36b_964x605.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Just like you can buy different package sizes of, say, pop at the grocery store (yes - I call it pop - I&#8217;m originally from the Midwest), pharmacies can also stock different package sizes of drugs. Just like pop comes in 12 or 24 packs of 12 oz cans and also single 20 oz or 2 liter bottles, drug products can come in varying package sizes. The same oral solid drug product from the same manufacturer could be available in say 100, 500, and 1000 count bottles. The same vaccine from the same manufacturer can come in multi-dose 5 mL vials, or pre-filled 0.5 mL syringes - each with perhaps the option of buying a 1 or 10 pack.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QLzG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835f7eeb-1861-4899-beb0-8dda41e1e36b_964x605.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QLzG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835f7eeb-1861-4899-beb0-8dda41e1e36b_964x605.png 424w, https://substackcdn.com/image/fetch/$s_!QLzG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835f7eeb-1861-4899-beb0-8dda41e1e36b_964x605.png 848w, https://substackcdn.com/image/fetch/$s_!QLzG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835f7eeb-1861-4899-beb0-8dda41e1e36b_964x605.png 1272w, https://substackcdn.com/image/fetch/$s_!QLzG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835f7eeb-1861-4899-beb0-8dda41e1e36b_964x605.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QLzG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835f7eeb-1861-4899-beb0-8dda41e1e36b_964x605.png" width="964" height="605" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/835f7eeb-1861-4899-beb0-8dda41e1e36b_964x605.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:605,&quot;width&quot;:964,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1223398,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QLzG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835f7eeb-1861-4899-beb0-8dda41e1e36b_964x605.png 424w, https://substackcdn.com/image/fetch/$s_!QLzG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835f7eeb-1861-4899-beb0-8dda41e1e36b_964x605.png 848w, https://substackcdn.com/image/fetch/$s_!QLzG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835f7eeb-1861-4899-beb0-8dda41e1e36b_964x605.png 1272w, https://substackcdn.com/image/fetch/$s_!QLzG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835f7eeb-1861-4899-beb0-8dda41e1e36b_964x605.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Grocery store shelves are not terribly dissimilar from pharmacy shelves. Different products from different manufacturers with different pack sizes.</figcaption></figure></div><p>If you wanted to compare the price of pop between package sizes, the best way would be to convert each package to the lowest common unit - let&#8217;s say ounces. So the 12 pack has 144 total ounces, the 24 pack has 288 total ounces, the 20 oz bottle has 20 ounces (duh), and the 2 liter bottle has (<a href="https://www.google.com/search?q=2+L+to+oz">consults Google</a>&#8230;) 67.628 ounces. Our oral solid product example is pretty straightforward aside from converting the specific &#8220;tablet&#8221; units to a more generic &#8220;eaches&#8221; unit - the 100 tablet bottle is 100 &#8220;eaches&#8221;, the 500 tablet bottle is 500 &#8220;eaches&#8221;, etc. For our vaccine example, the total package size of a 10 pack of 5 mL multi-dose vials is 50 mL, and the total package size of a 10 pack of 0.5 mL pre-filled syringes is 5 mL.</p><h2>I get it - so what&#8217;s the problem?</h2><p>The problem is that this drug packaging information is not easily available in machine-readable format. There&#8217;s not a simple source of information that provides the total amount of a drug product contained within a drug package. The closest you can easily get is a semi-structured, free-text description of the packaging from FDA&#8217;s NDC Directory. Example below:</p><p><code>1 VIAL, MULTI-DOSE in 1 CARTON (70461-554-10)  / 5 mL in 1 VIAL, MULTI-DOSE (70461-554-11)</code></p><p>Ideally, we would be able to break this up into discrete columns of data instead of one blob of text. We could have some sort of column for the outer package description (CARTON), a column for the inner package description (VIAL, MULTI-DOSE) and then maybe columns for the total quantity of inner packages (1), the total amount in each inner package (5), and the dose unit of the inner package (ML).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tE7W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7af9a5-6602-4a16-81b7-b26acd37059c_2548x1393.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tE7W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7af9a5-6602-4a16-81b7-b26acd37059c_2548x1393.png 424w, https://substackcdn.com/image/fetch/$s_!tE7W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7af9a5-6602-4a16-81b7-b26acd37059c_2548x1393.png 848w, https://substackcdn.com/image/fetch/$s_!tE7W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7af9a5-6602-4a16-81b7-b26acd37059c_2548x1393.png 1272w, https://substackcdn.com/image/fetch/$s_!tE7W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7af9a5-6602-4a16-81b7-b26acd37059c_2548x1393.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tE7W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7af9a5-6602-4a16-81b7-b26acd37059c_2548x1393.png" width="1456" height="796" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c7af9a5-6602-4a16-81b7-b26acd37059c_2548x1393.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:796,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:487661,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tE7W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7af9a5-6602-4a16-81b7-b26acd37059c_2548x1393.png 424w, https://substackcdn.com/image/fetch/$s_!tE7W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7af9a5-6602-4a16-81b7-b26acd37059c_2548x1393.png 848w, https://substackcdn.com/image/fetch/$s_!tE7W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7af9a5-6602-4a16-81b7-b26acd37059c_2548x1393.png 1272w, https://substackcdn.com/image/fetch/$s_!tE7W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7af9a5-6602-4a16-81b7-b26acd37059c_2548x1393.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The FDA NDC Directory has a semi-structured free-text package description at the NDC level.</figcaption></figure></div><p>The problem that makes this a lot more complicated is that drug packaging can get pretty complex pretty quickly. Another (more complex) example below:</p><p><code>1 KIT in 1 CARTON (80425-0348-1)  *  .9 mL in 1 PACKET (67777-419-02)  *  10 mL in 1 VIAL, PLASTIC (0409-4887-17)  *  10 mL in 1 VIAL, SINGLE-DOSE (0409-4888-02)  *  5 mL in 1 POUCH *  10 mL in 1 VIAL, SINGLE-DOSE (0409-1159-18)  *  10 VIAL, SINGLE-DOSE in 1 CARTON (55150-162-05)  / 5 mL in 1 VIAL, SINGLE-DOSE *  25 VIAL, SINGLE-DOSE in 1 CARTON (70121-1573-5)  / 1 mL in 1 VIAL, SINGLE-DOSE</code></p><p>Additionally, total package size for billing purposes needs to align with the NCPCP Billing Unit Standard Implementation Guide - you can see examples in section 5 (page 11) of <a href="https://assets.hcca-info.org/Portals/0/PDFs/Resources/library/Billing%20Unit%20Guide.pdf">this old version</a> of the guide. This is a bridge we will have to cross eventually, but it&#8217;s hard enough to just extract fundamental packaging information from drug products without even worrying about standards like this.</p><h2>Why would someone need drug package size information?</h2><p>Off the top of my head, I can think of at least 3 good examples where I&#8217;ve come across a need for discrete drug packaging information. These are all solved by commercial drug information databases, but not easy to solve with freely available drug data.</p><h3>Drug pricing</h3><p>NADAC provides a &#8220;per unit&#8221; (EA / GM / ML - same as the <a href="https://standards.ncpdp.org/Standards/media/pdf/BUS_fact_sheet.pdf">NCPCP Billing Unit Standard</a>) price that most pharmacies pay for a given drug product. If you wanted to know how much an entire package costs, you need to know how many total EA / GM / ML are contained within the package - again following the NCPDP BUS implementation conventions.</p><h3>Drug equivalency</h3><p>If you&#8217;re a pharmacy browsing a catalog for vaccines to purchase, and only want to see vaccines that come in a multi-pack, whatever purchasing platform you&#8217;re using needs to have discrete data about their drug products that includes package quantity (i.e. 10 vials in a package vs 1 vial in a package). Entire proprietary coding systems (GPPC, for instance) exist just to compare equivalent drug products by package size or package type.</p><h3>Basic drug information</h3><p>If you&#8217;re building a system that displays package-level (or NDC-level) information about drugs, you will need to include pack size info in the description of the drug name &#8212; otherwise drug products with multiple pack sizes will be indistinguishable by name alone. Also, you will likely need a column that lists the total package size or some sort of sortable or filterable number.</p><h2>Our goal is to solve this problem with our next data mart</h2><p>I&#8217;ve seen this challenge as a major milestone of my work for as long as CodeRx has been around. I&#8217;ve always been aware of where to start, but knew that if I dipped my toe in, I would have to be prepared to dive in completely to really solve the problem. I think I&#8217;m ready to jump in head first now.</p><p>The other important thing this packaging data has the potential to unlock is a mapping of inner to outer NDCs.  In the first example from the previous section, the outer package (the CARTON) has an NDC of 70461-554-10 while the inner package (the VIAL, MULTI-DOSE) has an NDC of 70461-554-11. Pharmacies purchase the OUTER NDC (the carton), but sometimes want to know details about the INNER NDC (the vial) - such as what the label looks like or how much drug it contains.</p><p>Our existing <a href="https://coderx.io/data-marts">data marts</a> are available for download as CSV files via AWS s3 buckets &#8212; this one would work the same way. Alternatively, you can use <a href="https://coderx.io/sagerx">SageRx</a> (our open-source drug data pipeline platform) to generate them for yourself.</p><p><strong>I&#8217;m aiming to have something to show for this data mart in the next month or two.</strong> </p><ul><li><p>If you would like to be notified when this data mart becomes available, please <a href="https://forms.gle/dwvoyyvsUKLehL5CA">join our waitlist</a> and we&#8217;ll reach out as soon as it&#8217;s ready. </p></li><li><p>If you want to help develop this, please <a href="https://join.slack.com/t/coderx/shared_invite/zt-5b8e9kr4-PsKAVe4crGmECQyyxDIJgQ">join our Slack</a> and introduce yourself. </p></li><li><p>If you had other questions or feedback, please don&#8217;t hesitate to <a href="https://coderx.io/contact-us">contact us</a>.</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://forms.gle/dwvoyyvsUKLehL5CA&quot;,&quot;text&quot;:&quot;Join data mart waitlist&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://forms.gle/dwvoyyvsUKLehL5CA"><span>Join data mart waitlist</span></a></p><p>I&#8217;ll be writing about our progress toward building this data mart, along with some actual sample data. Please subscribe if you haven&#8217;t already, and I would greatly appreciate if you would share this article with someone you think would find it useful. Thanks!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[SageRx vision statement]]></title><description><![CDATA[Envisioning a future where drug data is more accessible for everyone]]></description><link>https://coderxio.substack.com/p/sagerx-vision-statement</link><guid isPermaLink="false">https://coderxio.substack.com/p/sagerx-vision-statement</guid><dc:creator><![CDATA[Lukasz Przychodzien]]></dc:creator><pubDate>Thu, 09 May 2024 15:04:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GALY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff570bbe8-783b-4c02-ae71-307df76d2452_1079x926.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you just joined us and don&#8217;t really know what SageRx is, feel free to check out some previous articles about:</p><ol><li><p>what SageRx is,</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;87b66e90-5a59-4753-b59f-813517c8a510&quot;,&quot;caption&quot;:&quot;There's so much open drug data available online for free and maintained by different areas of the federal government. NLM RxNorm and DailyMed. CMS NADAC and Medicaid Utilization. FDA NDC Directory and Drug Enforcement Reports. These are just a few examples off the top of my head, but there are dozens more.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Introducing SageRx &#127807;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1007349,&quot;name&quot;:&quot;Joey LeGrand&quot;,&quot;bio&quot;:&quot;I&#8217;m a pharmacist and I write about using software development, data, and technology to improve the medication use process.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/08083b4f-15ea-4fb0-8a61-1fb51fa0b20f_450x450.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:34369519,&quot;name&quot;:&quot;Kent Bridgeman&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:null,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:34943684,&quot;name&quot;:&quot;Yevgeny Bulochnik&quot;,&quot;bio&quot;:&quot;Pharmacist who is passionate about coding. From pandas to ansible&quot;,&quot;photo_url&quot;:null,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-09-12T13:59:22.198Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc4350e-68cf-41d6-abce-a203096d397a_480x640.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://coderxio.substack.com/p/introducing-sagerx&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:136911282,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;The CodeRx Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F82ec2b97-44ad-49ee-98ad-167e88c587dd_500x500.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></li><li><p>why we built it,</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;594f80f3-fa93-4c85-8a2a-faf4a4ef9925&quot;,&quot;caption&quot;:&quot;For the past year or so, we've been going down rabbit holes discovering more and more sources of open drug data, each with its own differences and quirks. By \&quot;drug data\&quot; we mean data about drugs - typically (but not only) from US government sources like the Food and Drug Administration (FDA), National Library of Medicine (NLM), and Centers for Medicare &#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Open does not mean easy when it comes to drug data&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1007349,&quot;name&quot;:&quot;Joey LeGrand&quot;,&quot;bio&quot;:&quot;I&#8217;m a pharmacist and I write about using software development, data, and technology to improve the medication use process.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/08083b4f-15ea-4fb0-8a61-1fb51fa0b20f_450x450.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:34369519,&quot;name&quot;:&quot;Kent Bridgeman&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:null,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:34943684,&quot;name&quot;:&quot;Yevgeny Bulochnik&quot;,&quot;bio&quot;:&quot;Pharmacist who is passionate about coding. From pandas to ansible&quot;,&quot;photo_url&quot;:null,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-11-15T14:01:26.815Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F96b4b183-68e8-4b3e-8008-6bd03f2ef0f9_758x499.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://coderxio.substack.com/p/open-does-not-mean-easy-when-it-comes&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:83104939,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:9,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;The CodeRx Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F82ec2b97-44ad-49ee-98ad-167e88c587dd_500x500.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></li><li><p>and how it works.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;d5660888-0bc3-4177-aa52-e790ac6b1c33&quot;,&quot;caption&quot;:&quot;In case you missed our last post, we released a platform of open drug data pipelines called SageRx on GitHub. It&#8217;s open source, but I know from experience that I star a bunch of repos that seem interesting at the time and never go back to look at how they work. This post attempts to summarize the tools we chose to use to create SageRx and explain how it&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How SageRx works&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1007349,&quot;name&quot;:&quot;Joey LeGrand&quot;,&quot;bio&quot;:&quot;I&#8217;m a pharmacist and I write about using software development, data, and technology to improve the medication use process.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/08083b4f-15ea-4fb0-8a61-1fb51fa0b20f_450x450.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-09-20T17:55:10.751Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41fc6f71-f8f2-4aaf-8ac2-da24e6da7a3a_1157x863.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://coderxio.substack.com/p/how-sagerx-works&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:136955316,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;The CodeRx Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F82ec2b97-44ad-49ee-98ad-167e88c587dd_500x500.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></li></ol><p>If you&#8217;ve been following along, we just wanted to take a moment to try and articulate the vision of what we think open drug data has the potential to do when it&#8217;s made easily accessible to many people. </p><p>Long story short, our goal in the coming months is to release a stable, hosted version of the SageRx database, along with an open source visualization / BI toolkit that will make it easy to work with the data. More on the details of our roadmap in future posts - for now, simply enjoy our vision of what it could look like.</p><h2>Overall product vision</h2><p>SageRx came out of a need for lowering the barrier to entry for working with drug data. Our platform will provide easy access to clean and trustworthy drug data (expanding into additional data over time).&nbsp;</p><p>Users will be able to:</p><ul><li><p>develop custom datasets</p></li><li><p>visualize data</p></li><li><p>share data via charts and dashboards</p></li><li><p>integrate data into existing applications</p></li></ul><p>SageRx plans to be a hub for all things drug data. By creating a place to easily find, use, and share drug data, it will spark new ideas and teamwork in the healthtech community.</p><h2>Mission statement</h2><p>Our mission is to make drug data more accessible for everyone.</p><h2>Target audience</h2><p>We want to use SageRx to help anyone who needs drug data, even if they're not tech experts. If you're someone who struggles to find the needed data or spends a lot of time manipulating drug data, our platform aims to make it easier for you to use this data in your work.</p><ul><li><p>Researchers</p></li><li><p>Startups</p></li><li><p>Data scientists</p></li><li><p>Maybe you?</p></li></ul><h2>Value proposition</h2><p>SageRx aims to give you all the data you need, neatly organized and ready to use. With our help, you can spend less time searching and processing data, and more time making a difference with the information you find. By using our data either via visualizations or download (eventually through an API), you can unlock value without worrying about the underlying infrastructure.</p><h2>Flywheel</h2><p>Imagine a big wheel that's hard to start spinning but gets faster and faster once it's moving. That's what we want for SageRx. As more people use our platform and find useful information, they'll share their creations with others. That means even more people will use SageRx, creating a cycle of learning and discovery that never stops.</p><p>How the flywheel works:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GALY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff570bbe8-783b-4c02-ae71-307df76d2452_1079x926.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GALY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff570bbe8-783b-4c02-ae71-307df76d2452_1079x926.png 424w, https://substackcdn.com/image/fetch/$s_!GALY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff570bbe8-783b-4c02-ae71-307df76d2452_1079x926.png 848w, https://substackcdn.com/image/fetch/$s_!GALY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff570bbe8-783b-4c02-ae71-307df76d2452_1079x926.png 1272w, https://substackcdn.com/image/fetch/$s_!GALY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff570bbe8-783b-4c02-ae71-307df76d2452_1079x926.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GALY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff570bbe8-783b-4c02-ae71-307df76d2452_1079x926.png" width="1079" height="926" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f570bbe8-783b-4c02-ae71-307df76d2452_1079x926.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:926,&quot;width&quot;:1079,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GALY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff570bbe8-783b-4c02-ae71-307df76d2452_1079x926.png 424w, https://substackcdn.com/image/fetch/$s_!GALY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff570bbe8-783b-4c02-ae71-307df76d2452_1079x926.png 848w, https://substackcdn.com/image/fetch/$s_!GALY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff570bbe8-783b-4c02-ae71-307df76d2452_1079x926.png 1272w, https://substackcdn.com/image/fetch/$s_!GALY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff570bbe8-783b-4c02-ae71-307df76d2452_1079x926.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The SageRx flywheel. Each step makes SageRx more valuable to everyone who uses it.</figcaption></figure></div><h2>Key functionality</h2><p>To realize our vision, SageRx will need to focus on a few essential features:</p><h3>Components</h3><ul><li><p>Hosted version of SageRx database in the cloud (likely <a href="https://cloud.google.com/bigquery">BigQuery</a>), managed by the SageRx team</p></li><li><p>Authorization system, ensuring limited access and thus controlling costs</p></li><li><p>Data changelog, for easier explanation to users about data changes over time</p></li><li><p>Data documentation, allowing users to understand what is available and in which tables</p></li><li><p>Data quality validation, ensuring high trust with our users</p></li><li><p>Visualization platform (likely <a href="https://superset.apache.org/">Superset</a>) to allow users to query and utilize the data</p></li><li><p>Data delivery mechanism for users who just want a finished product, such as a flat file version of a data mart (cloud storage with provisioned access)</p></li></ul><p>Optional components:</p><ul><li><p>API, to call queries and extract data</p></li></ul><h3>Success metrics</h3><p>Success for SageRx is defined by our utility, which we are defining as our users discovering a variety of drug data. This metric of finding new insights can be estimated by tracking how many different questions people ask (aka novel queries). The more unique questions people ask, the more we know they find value in using our platform.</p><p>We want to grow a community of active and enthusiastic members, who &#8211; thanks to their feedback and our continuous improvement &#8211; will help fuel SageRx's momentum and thus its impact.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderx.io/sagerx&quot;,&quot;text&quot;:&quot;SageRx Website&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderx.io/sagerx"><span>SageRx Website</span></a></p><p>If you&#8217;d like to learn more or feel like contributing your time or expertise, please visit our website by clicking the button above. If you have comments or feedback about anything you read, please leave them in the Substack comments section or find us on <a href="https://join.slack.com/t/coderx/shared_invite/zt-5b8e9kr4-PsKAVe4crGmECQyyxDIJgQ">our Slack</a>. </p><p>Thanks for following along! &#127807;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Jobs and funding... in this economy?!?!]]></title><description><![CDATA[Updates from December 2023 and January]]></description><link>https://coderxio.substack.com/p/jobs-and-funding-in-this-economy</link><guid isPermaLink="false">https://coderxio.substack.com/p/jobs-and-funding-in-this-economy</guid><pubDate>Tue, 30 Jan 2024 15:01:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YBB7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d5d179-8353-405b-a2d6-4e4a14f6d7d7_2161x1047.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>Tools/Tips</h1><ul><li><p><a href="https://www.youtube.com/playlist?list=PL5nX2n0FFN36phdTvbDP9zS_q2-iP8Sip">Working with Medication Data</a> - Bite-size videos (&lt;5 minutes each) from CodeRx founder Joey LeGrand for a primer on working with medication data, as well as an introduction to <a href="https://coderx.io/sagerx">&#127807; SageRx</a>.</p></li><li><p><a href="https://www.youtube.com/watch?v=qgLB07aPPu4&amp;ab_channel=Flexpa">Intro to FHIR</a> (60 minutes) - Overview of standards, regulation, and the nuts and bolts of healthcare's hottest standard, Fast Healthcare Interoperability Resources (FHIR).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YBB7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d5d179-8353-405b-a2d6-4e4a14f6d7d7_2161x1047.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YBB7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d5d179-8353-405b-a2d6-4e4a14f6d7d7_2161x1047.png 424w, https://substackcdn.com/image/fetch/$s_!YBB7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d5d179-8353-405b-a2d6-4e4a14f6d7d7_2161x1047.png 848w, https://substackcdn.com/image/fetch/$s_!YBB7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d5d179-8353-405b-a2d6-4e4a14f6d7d7_2161x1047.png 1272w, https://substackcdn.com/image/fetch/$s_!YBB7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d5d179-8353-405b-a2d6-4e4a14f6d7d7_2161x1047.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YBB7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d5d179-8353-405b-a2d6-4e4a14f6d7d7_2161x1047.png" width="1456" height="705" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7d5d179-8353-405b-a2d6-4e4a14f6d7d7_2161x1047.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:705,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:411417,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YBB7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d5d179-8353-405b-a2d6-4e4a14f6d7d7_2161x1047.png 424w, https://substackcdn.com/image/fetch/$s_!YBB7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d5d179-8353-405b-a2d6-4e4a14f6d7d7_2161x1047.png 848w, https://substackcdn.com/image/fetch/$s_!YBB7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d5d179-8353-405b-a2d6-4e4a14f6d7d7_2161x1047.png 1272w, https://substackcdn.com/image/fetch/$s_!YBB7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d5d179-8353-405b-a2d6-4e4a14f6d7d7_2161x1047.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li></ul><h1>News</h1><ul><li><p><a href="https://updoc.ai/news?trk=public_post-text">Updoc Announces Funding and Partnerships for their AI Assistant</a> - Funding round included Eli Lily &amp; Company and Mayo. New collaborations with UCSF and American Heart Association announced. </p></li><li><p><a href="https://www.outofpocket.health/p/clinical-pharmacists-generative-ai-and-inpharmd">Out-of-Pocket Health covers InPharmD</a> - Review of go-to-market and a peak under the hood of the combo generative AI / clinical question platform.  </p></li><li><p><a href="https://blog.turquoise.health/turquoise-health-raises-30m-series-b-financing-expanding-healthcare-pricing-platform-offerings/">Turquoise Health Announces Funding</a> - Pricing platform raises $30 million in investment led by Adams Street Partners and previous investors such as Andreessen Horowitz and BoxGroup.</p><p></p></li></ul><h1>Jobs / opportunities</h1><ul><li><p><a href="https://ohiohealth.wd5.myworkdayjobs.com/OhioHealthJobs/job/BLOM-ADMINISTRATIVE-CAMPUS/Pharmacist-Informaticist---Data-Analytics-Focus--Columbus--OH_JR101646">Pharmacist Informatics, Ohio Health - Data Analytics Focus</a></p></li><li><p><a href="https://recruiting.paylocity.com/recruiting/jobs/Details/2152387/Blue-Circle-Health-Inc/Information-Systems-Product-Manager">Information Systems Product Manager, blue circle health - Remote</a></p></li><li><p><a href="https://jobs.jobvite.com/careers/oak-street-health/job/opz4qfwc?__jvst=Career%20Site">VP Product, Oak Street Health - Chicago, IL</a></p></li><li><p><a href="https://freemarkethealth.bamboohr.com/careers/101">Director, Clinical Product Strategy, Free Market Health</a> </p></li><li><p><a href="https://recruiting2.ultipro.com/MIL1017/JobBoard/f54234e9-dfde-b183-fd20-4fbdb19cba7a/OpportunityDetail?opportunityId=6d24ce60-cd8e-4453-bf59-a54d90cbf4ca">Senior Software Engineer, Healthcare Interoperability - IntelliScript</a></p></li><li><p><a href="https://amgen.wd1.myworkdayjobs.com/Careers/job/US---California---Thousand-Oaks/Data-Scientist_R-181584">Data Scientist, Amgen - Remote</a></p><p></p></li></ul><h1>Thread highlights</h1><ul><li><p><a href="https://coderx.slack.com/archives/CBNDJ9PK7/p1704399119999099">Drug Classifications with RXCUIs</a> </p></li><li><p><a href="https://coderx.slack.com/archives/CBNDJ9PK7/p1706049512182469">Standard Databases for Durable Medical Equipment</a></p><p></p></li></ul><h1>Member/Community spotlights </h1><ul><li><p><a href="https://coderxio.substack.com/p/the-twelve-ish-days-of-sagerx-mas">SageRx gets into the holiday sprit!</a> Twelve-ish days of SageRx-mas, a gentle introduction to the open-source medication information tool. The twelve-ish days are over, but you can <a href="https://coderx.io/sagerx">learn more about SageRx here</a>.</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The CodeRx Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The twelve-ish days of SageRx-mas]]></title><description><![CDATA[Free logins for a hosted version of SageRx for a limited time - now through 12/28/23]]></description><link>https://coderxio.substack.com/p/the-twelve-ish-days-of-sagerx-mas</link><guid isPermaLink="false">https://coderxio.substack.com/p/the-twelve-ish-days-of-sagerx-mas</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Fri, 15 Dec 2023 15:05:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QYDw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf01145e-504a-4b8a-b5a9-bcd12cf69210_1333x953.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Fill out the form below and we will email you login information to access a free hosted version of SageRx (via a hosted version of Apache Superset, via a service called Preset). This will be kind of like a communal open drug data lab for anyone who signs up during this period.</p><blockquote><p><strong>Get your login info here</strong> &#127807; <a href="https://forms.gle/tbEQwkhy5EH5Rcxq8">https://forms.gle/tbEQwkhy5EH5Rcxq8</a></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QYDw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf01145e-504a-4b8a-b5a9-bcd12cf69210_1333x953.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QYDw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf01145e-504a-4b8a-b5a9-bcd12cf69210_1333x953.png 424w, https://substackcdn.com/image/fetch/$s_!QYDw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf01145e-504a-4b8a-b5a9-bcd12cf69210_1333x953.png 848w, https://substackcdn.com/image/fetch/$s_!QYDw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf01145e-504a-4b8a-b5a9-bcd12cf69210_1333x953.png 1272w, https://substackcdn.com/image/fetch/$s_!QYDw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf01145e-504a-4b8a-b5a9-bcd12cf69210_1333x953.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QYDw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf01145e-504a-4b8a-b5a9-bcd12cf69210_1333x953.png" width="1333" height="953" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf01145e-504a-4b8a-b5a9-bcd12cf69210_1333x953.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:953,&quot;width&quot;:1333,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:114771,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QYDw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf01145e-504a-4b8a-b5a9-bcd12cf69210_1333x953.png 424w, https://substackcdn.com/image/fetch/$s_!QYDw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf01145e-504a-4b8a-b5a9-bcd12cf69210_1333x953.png 848w, https://substackcdn.com/image/fetch/$s_!QYDw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf01145e-504a-4b8a-b5a9-bcd12cf69210_1333x953.png 1272w, https://substackcdn.com/image/fetch/$s_!QYDw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf01145e-504a-4b8a-b5a9-bcd12cf69210_1333x953.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Explore datasets, SQL queries, charts, and dashboards created by others using SageRx data.</figcaption></figure></div><p>If people actually sign up for this and (even better!) actually use it over the next dozen or so days, we will likely host our own version of <a href="https://superset.apache.org/">Apache Superset</a> at some point early next year. The simple reason this only lasts twelve-ish days is that we have a free 14 day trial of premium features for <a href="https://preset.io/">Preset</a>&#8230; and it started yesterday. This is just a free and easy way for us to gauge interest in something similar to this without going through the hassle of hosting Apache Superset ourselves first.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DTQ_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e5528fb-2b9e-4fdc-9b88-2dc0af9549af_1156x754.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DTQ_!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e5528fb-2b9e-4fdc-9b88-2dc0af9549af_1156x754.gif 424w, https://substackcdn.com/image/fetch/$s_!DTQ_!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e5528fb-2b9e-4fdc-9b88-2dc0af9549af_1156x754.gif 848w, https://substackcdn.com/image/fetch/$s_!DTQ_!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e5528fb-2b9e-4fdc-9b88-2dc0af9549af_1156x754.gif 1272w, https://substackcdn.com/image/fetch/$s_!DTQ_!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e5528fb-2b9e-4fdc-9b88-2dc0af9549af_1156x754.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DTQ_!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e5528fb-2b9e-4fdc-9b88-2dc0af9549af_1156x754.gif" width="1156" height="754" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e5528fb-2b9e-4fdc-9b88-2dc0af9549af_1156x754.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:754,&quot;width&quot;:1156,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9618703,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DTQ_!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e5528fb-2b9e-4fdc-9b88-2dc0af9549af_1156x754.gif 424w, https://substackcdn.com/image/fetch/$s_!DTQ_!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e5528fb-2b9e-4fdc-9b88-2dc0af9549af_1156x754.gif 848w, https://substackcdn.com/image/fetch/$s_!DTQ_!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e5528fb-2b9e-4fdc-9b88-2dc0af9549af_1156x754.gif 1272w, https://substackcdn.com/image/fetch/$s_!DTQ_!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e5528fb-2b9e-4fdc-9b88-2dc0af9549af_1156x754.gif 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Write queries using any of the data currently available in SageRx.</figcaption></figure></div><p>With Apache Superset, you can write queries using any of the tables in SageRx, create charts using that data, and build visualizations using those charts, tables, and also markdown. You can publish your work to instantly share it with other users using SageRx via the hosted instance of Apache Superset &#8212; or keep it in draft form. Easily collaborate with team members and data nerds from around the world &#129299; using open drug data from SageRx in the cloud.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BBlv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F440bc889-40fe-415c-ab7d-ff6009e0505c_1272x700.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BBlv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F440bc889-40fe-415c-ab7d-ff6009e0505c_1272x700.gif 424w, https://substackcdn.com/image/fetch/$s_!BBlv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F440bc889-40fe-415c-ab7d-ff6009e0505c_1272x700.gif 848w, https://substackcdn.com/image/fetch/$s_!BBlv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F440bc889-40fe-415c-ab7d-ff6009e0505c_1272x700.gif 1272w, https://substackcdn.com/image/fetch/$s_!BBlv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F440bc889-40fe-415c-ab7d-ff6009e0505c_1272x700.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BBlv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F440bc889-40fe-415c-ab7d-ff6009e0505c_1272x700.gif" width="1272" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/440bc889-40fe-415c-ab7d-ff6009e0505c_1272x700.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:700,&quot;width&quot;:1272,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4927972,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BBlv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F440bc889-40fe-415c-ab7d-ff6009e0505c_1272x700.gif 424w, https://substackcdn.com/image/fetch/$s_!BBlv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F440bc889-40fe-415c-ab7d-ff6009e0505c_1272x700.gif 848w, https://substackcdn.com/image/fetch/$s_!BBlv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F440bc889-40fe-415c-ab7d-ff6009e0505c_1272x700.gif 1272w, https://substackcdn.com/image/fetch/$s_!BBlv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F440bc889-40fe-415c-ab7d-ff6009e0505c_1272x700.gif 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Create charts and dashboards and share them with others.</figcaption></figure></div><blockquote><p><strong>Get your login info here</strong> &#127807; <a href="https://forms.gle/tbEQwkhy5EH5Rcxq8">https://forms.gle/tbEQwkhy5EH5Rcxq8</a></p></blockquote><p>Even if you don&#8217;t celebrate SageRx-mas, you are absolutely still invited to join. Also, we&#8217;d love any feedback about your experience - please shoot us an email at <a href="mailto:hello@coderx.io">hello@coderx.io</a> or <a href="https://join.slack.com/t/coderx/shared_invite/zt-5b8e9kr4-PsKAVe4crGmECQyyxDIJgQ">jump into our Slack</a> and start up a conversation with the community that supports SageRx.</p><p>Oh - and please be patient with us. One kind of weirdly positive but annoying outcome of this might be that we overload the meager server we&#8217;re currently using to host the SageRx database. If that happens, we&#8217;ll try to get everything up and running again as soon as possible.</p><p>Thanks for following along and for all of your support!</p><p>&#127807;</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[My path to CodeRx]]></title><description><![CDATA[And what it has to do with flea markets]]></description><link>https://coderxio.substack.com/p/my-path-to-coderx</link><guid isPermaLink="false">https://coderxio.substack.com/p/my-path-to-coderx</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Tue, 21 Nov 2023 21:20:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!930B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9734f34-c161-4c2a-b105-e913995cc5e2_752x418.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ever since I was a little kid, I loved scouring garage sales, hardware stores, and flea markets for odds and ends that I would collect in boxes with the intention of building something greater than the sum of their parts.  Springs, hinges, triggers, plastic cases, tubes, etc. I&#8217;ve always had an inventor&#8217;s spirit, but never had the tools or know-how to work with physical components to build inventions. But then again I was like 8 at the time and it was the 90s and I didn&#8217;t have access to the internet so I guess I should cut myself a break.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!930B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9734f34-c161-4c2a-b105-e913995cc5e2_752x418.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!930B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9734f34-c161-4c2a-b105-e913995cc5e2_752x418.png 424w, https://substackcdn.com/image/fetch/$s_!930B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9734f34-c161-4c2a-b105-e913995cc5e2_752x418.png 848w, https://substackcdn.com/image/fetch/$s_!930B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9734f34-c161-4c2a-b105-e913995cc5e2_752x418.png 1272w, https://substackcdn.com/image/fetch/$s_!930B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9734f34-c161-4c2a-b105-e913995cc5e2_752x418.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!930B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9734f34-c161-4c2a-b105-e913995cc5e2_752x418.png" width="752" height="418" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e9734f34-c161-4c2a-b105-e913995cc5e2_752x418.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:418,&quot;width&quot;:752,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!930B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9734f34-c161-4c2a-b105-e913995cc5e2_752x418.png 424w, https://substackcdn.com/image/fetch/$s_!930B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9734f34-c161-4c2a-b105-e913995cc5e2_752x418.png 848w, https://substackcdn.com/image/fetch/$s_!930B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9734f34-c161-4c2a-b105-e913995cc5e2_752x418.png 1272w, https://substackcdn.com/image/fetch/$s_!930B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9734f34-c161-4c2a-b105-e913995cc5e2_752x418.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Anyway, at some point in my formative years I discovered <a href="https://en.wikipedia.org/wiki/QBasic">QBasic</a> in the <a href="https://en.wikipedia.org/wiki/MS-DOS">DOS prompt</a> of my grandma&#8217;s old PC (<code>C:\&gt;qbasic</code>). Then I rode my physical bike to a physical library, and rented a physical book that taught me all about QBasic and more importantly about basic programming principals in general. Gradually, I started spending less time digging around in dusty flea market bins and more time scribbling workflow diagrams and pseudo code on big yellow legal pads - inventing <a href="https://github.com/jrlegrand/zantar">digital things</a> instead of physical.</p><p>At some point in physics class in high school, I told some random guy that I was torn between going to college for pharmacy or computer science, and he said that you can teach yourself whatever you need to know about computers, but you can&#8217;t just manifest a pharmacy license. So, off to pharmacy school I went. Six very academically challenging years later, I emerged with a PharmD. One of the first things I did after graduating was get another physical book - <a href="https://larry.pub/">this time about PHP</a> - and started learning how to build a <a href="https://github.com/jrlegrand/topular">webapp</a>.</p><p>For several years after graduating, I was working as a retail pharmacist and in my free time building a webapp that <a href="https://github.com/jrlegrand/topular">aggregated local news</a> from blogs / news outlets and ranked it based on social media reactions. After a while, I paused and asked myself why I (a pharmacist) was using my technical skills to build a journalism application - something I didn&#8217;t really care that much about. I shuttered my website and threw myself into learning more about health data standards, FHIR, Python, and SQL. This time, there wasn&#8217;t a good physical book that covered all that ground.</p><p>I went straight from retail pharmacy to a role as a e-prescribing software product owner at a major academic medical center (as one does) and learned a little about software development processes. Then, I got lucky and was part of a big-bang Epic EHR implementation and was immersed in the world of HealthIT as an EHR analyst. I started a <a href="https://join.slack.com/t/coderx/shared_invite/zt-5b8e9kr4-PsKAVe4crGmECQyyxDIJgQ">little Slack group</a> initially as a way to chat with people about HealthIT topics relating to EHRs, but found that my interests were really less about &#8220;turning the knobs of Epic&#8221; than they were about &#8220;inventing healthcare stuff&#8221;.</p><p>Obviously, my sweet spot was somewhere in the middle of pharmacy and computer science, so I &#8220;rebranded&#8221; my little Slack to <a href="https://coderx.io/">CodeRx</a> and started connecting with pharmacists like me who were way smarter and better than me at coding and data. I somehow convinced a few of them to compete in an HHS/ONC-sponsored contest to <a href="https://coderx.io/projects/forgerx">make synthetic medication data more realistic</a> and we won first prize in 2021. However, in doing so, we discovered what a pain it was to work with open drug data - different file types, formatting, update schedules, terminologies, etc.</p><p>The friction we felt working with open drug data, combined with the withdrawal symptoms I felt from not having a big project to work on, led a smaller group of us to start working on a project that could make it much easier to work with open drug data. If you&#8217;ve been reading what I&#8217;ve been writing, you might already know that this led to the development of <a href="https://coderx.io/sagerx">SageRx</a>. I went from knowing very little about drug data to having a pretty comprehensive library of open <a href="https://coderx.io/sagerx/source-data">drug data sources</a> to work with in a couple of years.</p><p>With <a href="https://coderx.io/sagerx">SageRx</a>, I feel like I&#8217;m starting to again gather my boxes full of odds and ends that can be used to build things greater than the sum of their parts. This time, I&#8217;m curating parts from government organizations instead of flea markets and garage sales. Some recall data from FDA here, patient prescription medication surveys from AHRQ MEPS there, all historical NDCs from RxNorm here, WHO ATC classification mappings to product RXCUIs there. Now that my box of parts is starting to get full, what should we build with it? What problems can we solve with it? What research can be done with it? We have some ideas, but would love to know what you think.</p><p>If you want to be part of the rest of the story, please consider jumping into the <a href="https://join.slack.com/t/coderx/shared_invite/zt-5b8e9kr4-PsKAVe4crGmECQyyxDIJgQ">CodeRx Slack</a> - it&#8217;s nearly 900 people strong now! If you have any ideas for things to build or problems to solve or research to be done, please <a href="https://coderx.io/contact">contact us</a> - we hope to hear from you. In the meantime, I&#8217;ll continue down this path and see where it leads me.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Working with Medicare Part D prescription drug data]]></title><description><![CDATA[Where the only consistency is inconsistency]]></description><link>https://coderxio.substack.com/p/working-with-medicare-part-d-prescription</link><guid isPermaLink="false">https://coderxio.substack.com/p/working-with-medicare-part-d-prescription</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Mon, 16 Oct 2023 19:54:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fAtu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0335a8d6-42c6-405f-b660-96e94a7e3e18_1179x584.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is a great example of how gnarly it can be to work with public data sources in an automated manner.</p><p>Per a <a href="https://www.linkedin.com/feed/update/urn:li:activity:7117889110320537600">request</a> from <a href="https://benjaminjolley.substack.com/">Benjamin Jolley</a>, I started working on pulling data from the <a href="https://www.cms.gov/data-research/statistics-trends-and-reports/prescription-drug-plan-formulary-pharmacy-network-and-pricing-information-files-download">Medicare Part D Prescription Drug Plan Formulary, Pharmacy Network, and Pricing Information</a> data source into <a href="https://coderxio.substack.com/p/introducing-sagerx">SageRx</a>.</p><p>I went after the quarterly release files because they were the only ones with pricing information.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fAtu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0335a8d6-42c6-405f-b660-96e94a7e3e18_1179x584.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fAtu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0335a8d6-42c6-405f-b660-96e94a7e3e18_1179x584.png 424w, https://substackcdn.com/image/fetch/$s_!fAtu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0335a8d6-42c6-405f-b660-96e94a7e3e18_1179x584.png 848w, https://substackcdn.com/image/fetch/$s_!fAtu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0335a8d6-42c6-405f-b660-96e94a7e3e18_1179x584.png 1272w, https://substackcdn.com/image/fetch/$s_!fAtu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0335a8d6-42c6-405f-b660-96e94a7e3e18_1179x584.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fAtu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0335a8d6-42c6-405f-b660-96e94a7e3e18_1179x584.png" width="1179" height="584" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0335a8d6-42c6-405f-b660-96e94a7e3e18_1179x584.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:584,&quot;width&quot;:1179,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:104273,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fAtu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0335a8d6-42c6-405f-b660-96e94a7e3e18_1179x584.png 424w, https://substackcdn.com/image/fetch/$s_!fAtu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0335a8d6-42c6-405f-b660-96e94a7e3e18_1179x584.png 848w, https://substackcdn.com/image/fetch/$s_!fAtu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0335a8d6-42c6-405f-b660-96e94a7e3e18_1179x584.png 1272w, https://substackcdn.com/image/fetch/$s_!fAtu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0335a8d6-42c6-405f-b660-96e94a7e3e18_1179x584.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Medicare Part D Prescription Drug Plan Formulary, Pharmacy Network, and Pricing Information quarterly zip file.</figcaption></figure></div><p>Here is a list of barriers I had to overcome:</p><ol><li><p>The zip files were encoded in a weird <a href="https://stackoverflow.com/questions/12809651/opening-zipfile-of-unsupported-compression-type-silently-returns-empty-filestrea">deflate64 format</a> - likely because someone at CMS just puts the files in a folder on a Windows machine, right clicks, and selects "<a href="https://pypi.org/project/zipfile-deflate64/">Send to zip file</a>" when they are putting this data together for a release. I discovered that the normal Python <code>zipfile </code>package does not handle this format and had to add a separate <code>zipfile-deflate64</code> package as a dependency to the project in order to work with this data&#8230; which is kind of a bummer because I&#8217;m trying to keep the dependencies to a minimum.</p></li><li><p>Once unzipped, the pipe-delimited text files contained within the zip files have a <em>slightly</em> different naming convention than then names of the zip files themselves AND they aren&#8217;t even consistently formatted within themselves. Examples below:</p><ol><li><p>Only one text file is capitalized (i.e. &#8220;Indication Based Coverage Formulary File&#8230;&#8221;) vs all the other files being lower case (i.e. &#8220;excluded drugs formulary file&#8230;&#8221;).  A minor inconvenience to standardization.</p></li><li><p>Some of the text files have one space before &#8220; PPUF&#8221; while others have two spaces before &#8220;  PPUF&#8221;. This is extra annoying because it means you have to treat individual files differently vs just looping through them somehow. Or I guess I could do some RegEx and renaming of the files to clean all of this up.</p></li></ol></li><li><p>All of the text files, once unzipped, were in UTF-8 encoding EXCEPT FOR ONE which was in ANSI formatting for some reason. And I had to figure out that Postgres does not support copying ANSI encoded data so I had to use a WIN1252 encoding format just for this file.</p></li><li><p>All of the files except one had &#8220;file&#8221; in their name (i.e. &#8220;pricing file&#8221; and &#8220;pharmacy networks file&#8221; vs &#8220;plan information&#8221;), which wouldn&#8217;t be a huge deal if it weren&#8217;t for my OCD.</p></li><li><p>The naming of the quarterly zip files has a date in the file name (which means we need to know the date to download new files), but the only pattern I can figure out is below&#8230; which is kind of a weird pattern to automate. </p><ol><li><p>Q1 seems to be the second Friday in March</p></li><li><p>Q2 seems to be the first Friday in June</p></li><li><p>Q3 seems to be the second Friday in September</p></li><li><p>Q4 seems to be the first Friday in December</p></li></ol></li><li><p>Instead of being consistent and containing the date like the exterior zip files (i.e. &#8220;20230602&#8221;, the INTERIOR zip files contain the year and quarter number (i.e. &#8220;2023Q2&#8221;). This isn&#8217;t a huge deal - it just means that I have to take an extra step to calculate the quarter number from the date to automate this part, which has to be <a href="https://stackoverflow.com/questions/1406131/is-there-a-function-to-determine-which-quarter-of-the-year-a-date-is-in">custom code</a> since I don&#8217;t think this is commonly available in Python packages that work with dates.</p></li><li><p>Due to their massive size, the pharmacy network data is split into six different zip files, but I&#8217;m assuming it should all be contained in a single table to make it easy to work with. So I decided to unzip all the files and combine them into a single table instead of creating six different tables.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Bmz-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadd8156-6947-4ffa-8e11-7c5bec3b5a5f_1920x1003.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Bmz-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadd8156-6947-4ffa-8e11-7c5bec3b5a5f_1920x1003.png 424w, https://substackcdn.com/image/fetch/$s_!Bmz-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadd8156-6947-4ffa-8e11-7c5bec3b5a5f_1920x1003.png 848w, https://substackcdn.com/image/fetch/$s_!Bmz-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadd8156-6947-4ffa-8e11-7c5bec3b5a5f_1920x1003.png 1272w, https://substackcdn.com/image/fetch/$s_!Bmz-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadd8156-6947-4ffa-8e11-7c5bec3b5a5f_1920x1003.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Bmz-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadd8156-6947-4ffa-8e11-7c5bec3b5a5f_1920x1003.png" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eadd8156-6947-4ffa-8e11-7c5bec3b5a5f_1920x1003.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:122961,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Bmz-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadd8156-6947-4ffa-8e11-7c5bec3b5a5f_1920x1003.png 424w, https://substackcdn.com/image/fetch/$s_!Bmz-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadd8156-6947-4ffa-8e11-7c5bec3b5a5f_1920x1003.png 848w, https://substackcdn.com/image/fetch/$s_!Bmz-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadd8156-6947-4ffa-8e11-7c5bec3b5a5f_1920x1003.png 1272w, https://substackcdn.com/image/fetch/$s_!Bmz-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadd8156-6947-4ffa-8e11-7c5bec3b5a5f_1920x1003.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Airflow DAG for this data source.</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EeZ6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2866e0d-f267-47bf-b8ea-39d663a13e4a_1920x1003.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EeZ6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2866e0d-f267-47bf-b8ea-39d663a13e4a_1920x1003.png 424w, https://substackcdn.com/image/fetch/$s_!EeZ6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2866e0d-f267-47bf-b8ea-39d663a13e4a_1920x1003.png 848w, https://substackcdn.com/image/fetch/$s_!EeZ6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2866e0d-f267-47bf-b8ea-39d663a13e4a_1920x1003.png 1272w, https://substackcdn.com/image/fetch/$s_!EeZ6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2866e0d-f267-47bf-b8ea-39d663a13e4a_1920x1003.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EeZ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2866e0d-f267-47bf-b8ea-39d663a13e4a_1920x1003.png" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2866e0d-f267-47bf-b8ea-39d663a13e4a_1920x1003.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:172997,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EeZ6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2866e0d-f267-47bf-b8ea-39d663a13e4a_1920x1003.png 424w, https://substackcdn.com/image/fetch/$s_!EeZ6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2866e0d-f267-47bf-b8ea-39d663a13e4a_1920x1003.png 848w, https://substackcdn.com/image/fetch/$s_!EeZ6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2866e0d-f267-47bf-b8ea-39d663a13e4a_1920x1003.png 1272w, https://substackcdn.com/image/fetch/$s_!EeZ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2866e0d-f267-47bf-b8ea-39d663a13e4a_1920x1003.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The same data loaded into the datasource schema of the SageRx Postgres database.</figcaption></figure></div><p>Here&#8217;s the finished product. Unzipped and loaded into the database, it takes up about 40 GB of storage space&#8230; which is a lot compared to other open data sources. Definitely lots of optimizations to make, but at least it&#8217;s all loaded. Now to start transforming it&#8230;</p><p>If you want to learn more about SageRx, please read through some of my <a href="https://coderxio.substack.com/p/introducing-sagerx">earlier posts</a> or check out the <a href="https://github.com/coderxio/sagerx">GitHub repo</a>. Until I submit a PR, you can <a href="https://github.com/coderxio/sagerx/compare/jrlegrand/cms-drug-plans">review the branch</a> I created for this work. Thanks for reading!</p><p>&#127807;</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[SageRx spotlight: RxNorm]]></title><description><![CDATA[Or as we lovingly refer to it: RxNorm Reconfigured]]></description><link>https://coderxio.substack.com/p/sagerx-spotlight-rxnorm</link><guid isPermaLink="false">https://coderxio.substack.com/p/sagerx-spotlight-rxnorm</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Wed, 04 Oct 2023 17:06:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!C4tG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a736ad-d38e-4aa1-b576-d15b946068b1_906x1315.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C4tG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a736ad-d38e-4aa1-b576-d15b946068b1_906x1315.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C4tG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a736ad-d38e-4aa1-b576-d15b946068b1_906x1315.png 424w, https://substackcdn.com/image/fetch/$s_!C4tG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a736ad-d38e-4aa1-b576-d15b946068b1_906x1315.png 848w, https://substackcdn.com/image/fetch/$s_!C4tG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a736ad-d38e-4aa1-b576-d15b946068b1_906x1315.png 1272w, https://substackcdn.com/image/fetch/$s_!C4tG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a736ad-d38e-4aa1-b576-d15b946068b1_906x1315.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C4tG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a736ad-d38e-4aa1-b576-d15b946068b1_906x1315.png" width="906" height="1315" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41a736ad-d38e-4aa1-b576-d15b946068b1_906x1315.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1315,&quot;width&quot;:906,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!C4tG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a736ad-d38e-4aa1-b576-d15b946068b1_906x1315.png 424w, https://substackcdn.com/image/fetch/$s_!C4tG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a736ad-d38e-4aa1-b576-d15b946068b1_906x1315.png 848w, https://substackcdn.com/image/fetch/$s_!C4tG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a736ad-d38e-4aa1-b576-d15b946068b1_906x1315.png 1272w, https://substackcdn.com/image/fetch/$s_!C4tG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41a736ad-d38e-4aa1-b576-d15b946068b1_906x1315.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>RxNorm Reconfigured</h1><p>This article is the follow-up to another one from nearly two years ago called <a href="https://coderxio.substack.com/p/restructuring-rxnorm-for-humans">Restructuring RxNorm for humans</a>.  To make RxNorm easier to use in a relational database alongside other data sources that use NDCs and RXCUIs to identify medications, we restructured / rearranged / reconfigured the tables in RxNorm to the structure depicted above. Forgive the sloppy lines connecting everything - working with what I&#8217;ve got.</p><p>All of these tables are available within <a href="https://github.com/coderxio/sagerx">SageRx</a> and in this article I&#8217;m going to step through each section and explain the thought process behind organizing it this way. These building blocks are in the <code>staging</code> schema and then are utilized for more useful utility queries in the <code>intermediate</code> schema. Both are discussed below.</p><h2>Staging schema</h2><p>The <code>staging</code> schema contains data models that represent the most clinically useful elements of the data within RxNorm.</p><h3>NDCs</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eprc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2f59cac-656b-4bf5-b55f-8bd3c04600d3_156x138.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eprc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2f59cac-656b-4bf5-b55f-8bd3c04600d3_156x138.png 424w, https://substackcdn.com/image/fetch/$s_!eprc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2f59cac-656b-4bf5-b55f-8bd3c04600d3_156x138.png 848w, https://substackcdn.com/image/fetch/$s_!eprc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2f59cac-656b-4bf5-b55f-8bd3c04600d3_156x138.png 1272w, https://substackcdn.com/image/fetch/$s_!eprc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2f59cac-656b-4bf5-b55f-8bd3c04600d3_156x138.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eprc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2f59cac-656b-4bf5-b55f-8bd3c04600d3_156x138.png" width="156" height="138" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d2f59cac-656b-4bf5-b55f-8bd3c04600d3_156x138.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:138,&quot;width&quot;:156,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4146,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eprc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2f59cac-656b-4bf5-b55f-8bd3c04600d3_156x138.png 424w, https://substackcdn.com/image/fetch/$s_!eprc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2f59cac-656b-4bf5-b55f-8bd3c04600d3_156x138.png 848w, https://substackcdn.com/image/fetch/$s_!eprc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2f59cac-656b-4bf5-b55f-8bd3c04600d3_156x138.png 1272w, https://substackcdn.com/image/fetch/$s_!eprc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2f59cac-656b-4bf5-b55f-8bd3c04600d3_156x138.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>This table contains one row per NDC (in NDC11 format) with links to clinical products (and brand products where the NDC has an associated brand product per RxNorm). You can use this table to quickly determine if an NDC has an associated brand product. All NDCs should have an associated clinical product.</p><h3>Brand products</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gP7B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0909b525-efca-4ba7-af0c-d18d4346399e_279x452.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gP7B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0909b525-efca-4ba7-af0c-d18d4346399e_279x452.png 424w, https://substackcdn.com/image/fetch/$s_!gP7B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0909b525-efca-4ba7-af0c-d18d4346399e_279x452.png 848w, https://substackcdn.com/image/fetch/$s_!gP7B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0909b525-efca-4ba7-af0c-d18d4346399e_279x452.png 1272w, https://substackcdn.com/image/fetch/$s_!gP7B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0909b525-efca-4ba7-af0c-d18d4346399e_279x452.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gP7B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0909b525-efca-4ba7-af0c-d18d4346399e_279x452.png" width="279" height="452" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0909b525-efca-4ba7-af0c-d18d4346399e_279x452.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:452,&quot;width&quot;:279,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21307,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gP7B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0909b525-efca-4ba7-af0c-d18d4346399e_279x452.png 424w, https://substackcdn.com/image/fetch/$s_!gP7B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0909b525-efca-4ba7-af0c-d18d4346399e_279x452.png 848w, https://substackcdn.com/image/fetch/$s_!gP7B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0909b525-efca-4ba7-af0c-d18d4346399e_279x452.png 1272w, https://substackcdn.com/image/fetch/$s_!gP7B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0909b525-efca-4ba7-af0c-d18d4346399e_279x452.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If an NDC has an associated brand product (BPCK / SBD), this table will link to the brand name as well as the associated clinical product.</p><p>If a brand product is a package that has multiple components (BPCK), this table will also link to the base brand product components (typically SBD) via the linking table.</p><h3>Brands</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kxKA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe24ce725-4c5b-4421-aa8a-c70e9858dea8_142x158.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kxKA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe24ce725-4c5b-4421-aa8a-c70e9858dea8_142x158.png 424w, https://substackcdn.com/image/fetch/$s_!kxKA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe24ce725-4c5b-4421-aa8a-c70e9858dea8_142x158.png 848w, https://substackcdn.com/image/fetch/$s_!kxKA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe24ce725-4c5b-4421-aa8a-c70e9858dea8_142x158.png 1272w, https://substackcdn.com/image/fetch/$s_!kxKA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe24ce725-4c5b-4421-aa8a-c70e9858dea8_142x158.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kxKA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe24ce725-4c5b-4421-aa8a-c70e9858dea8_142x158.png" width="142" height="158" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e24ce725-4c5b-4421-aa8a-c70e9858dea8_142x158.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:158,&quot;width&quot;:142,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4977,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kxKA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe24ce725-4c5b-4421-aa8a-c70e9858dea8_142x158.png 424w, https://substackcdn.com/image/fetch/$s_!kxKA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe24ce725-4c5b-4421-aa8a-c70e9858dea8_142x158.png 848w, https://substackcdn.com/image/fetch/$s_!kxKA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe24ce725-4c5b-4421-aa8a-c70e9858dea8_142x158.png 1272w, https://substackcdn.com/image/fetch/$s_!kxKA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe24ce725-4c5b-4421-aa8a-c70e9858dea8_142x158.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This table contains all brand names for brand products. You can also get to the clinical ingredients from this table.</p><h3>Clinical products</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!y0nk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf5805c7-39df-4e7f-9f8a-d549b718f9aa_288x446.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y0nk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf5805c7-39df-4e7f-9f8a-d549b718f9aa_288x446.png 424w, https://substackcdn.com/image/fetch/$s_!y0nk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf5805c7-39df-4e7f-9f8a-d549b718f9aa_288x446.png 848w, https://substackcdn.com/image/fetch/$s_!y0nk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf5805c7-39df-4e7f-9f8a-d549b718f9aa_288x446.png 1272w, https://substackcdn.com/image/fetch/$s_!y0nk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf5805c7-39df-4e7f-9f8a-d549b718f9aa_288x446.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y0nk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf5805c7-39df-4e7f-9f8a-d549b718f9aa_288x446.png" width="288" height="446" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf5805c7-39df-4e7f-9f8a-d549b718f9aa_288x446.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:446,&quot;width&quot;:288,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:22562,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!y0nk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf5805c7-39df-4e7f-9f8a-d549b718f9aa_288x446.png 424w, https://substackcdn.com/image/fetch/$s_!y0nk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf5805c7-39df-4e7f-9f8a-d549b718f9aa_288x446.png 848w, https://substackcdn.com/image/fetch/$s_!y0nk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf5805c7-39df-4e7f-9f8a-d549b718f9aa_288x446.png 1272w, https://substackcdn.com/image/fetch/$s_!y0nk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf5805c7-39df-4e7f-9f8a-d549b718f9aa_288x446.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Every NDC should have an associated clinical product (GPCK / SCD), even though not every NDC has an associated brand product. Think of clinical products like the generic name of a brand name product (even if the brand name product does not currently have a generic alternative).</p><p>Like brand products, clinical products can be packaged with multiple clinical product components (GPCK). This table links to to the base clinical product components (typically SCD) via the linking table.</p><p>Here&#8217;s an example of how this linking works:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FfxQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0211d6-550c-4aad-8a02-d2f2901c8317_1257x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FfxQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0211d6-550c-4aad-8a02-d2f2901c8317_1257x800.png 424w, https://substackcdn.com/image/fetch/$s_!FfxQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0211d6-550c-4aad-8a02-d2f2901c8317_1257x800.png 848w, https://substackcdn.com/image/fetch/$s_!FfxQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0211d6-550c-4aad-8a02-d2f2901c8317_1257x800.png 1272w, https://substackcdn.com/image/fetch/$s_!FfxQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0211d6-550c-4aad-8a02-d2f2901c8317_1257x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FfxQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0211d6-550c-4aad-8a02-d2f2901c8317_1257x800.png" width="1257" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c0211d6-550c-4aad-8a02-d2f2901c8317_1257x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1257,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:115710,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FfxQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0211d6-550c-4aad-8a02-d2f2901c8317_1257x800.png 424w, https://substackcdn.com/image/fetch/$s_!FfxQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0211d6-550c-4aad-8a02-d2f2901c8317_1257x800.png 848w, https://substackcdn.com/image/fetch/$s_!FfxQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0211d6-550c-4aad-8a02-d2f2901c8317_1257x800.png 1272w, https://substackcdn.com/image/fetch/$s_!FfxQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c0211d6-550c-4aad-8a02-d2f2901c8317_1257x800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Terazosin dose pack (GPCK) contains two products (SCDs). Lisinopril product (SCD) only &#8220;contains&#8221; itself (SCD).</figcaption></figure></div><h3>Ingredients</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dTRl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbbf1fc-1b14-4df8-a510-1088fc99a5b8_258x416.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dTRl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbbf1fc-1b14-4df8-a510-1088fc99a5b8_258x416.png 424w, https://substackcdn.com/image/fetch/$s_!dTRl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbbf1fc-1b14-4df8-a510-1088fc99a5b8_258x416.png 848w, https://substackcdn.com/image/fetch/$s_!dTRl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbbf1fc-1b14-4df8-a510-1088fc99a5b8_258x416.png 1272w, https://substackcdn.com/image/fetch/$s_!dTRl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbbf1fc-1b14-4df8-a510-1088fc99a5b8_258x416.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dTRl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbbf1fc-1b14-4df8-a510-1088fc99a5b8_258x416.png" width="258" height="416" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfbbf1fc-1b14-4df8-a510-1088fc99a5b8_258x416.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:416,&quot;width&quot;:258,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!dTRl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbbf1fc-1b14-4df8-a510-1088fc99a5b8_258x416.png 424w, https://substackcdn.com/image/fetch/$s_!dTRl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbbf1fc-1b14-4df8-a510-1088fc99a5b8_258x416.png 848w, https://substackcdn.com/image/fetch/$s_!dTRl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbbf1fc-1b14-4df8-a510-1088fc99a5b8_258x416.png 1272w, https://substackcdn.com/image/fetch/$s_!dTRl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbbf1fc-1b14-4df8-a510-1088fc99a5b8_258x416.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>From this point onward, we forego brand products (since they are just branded clinical products) and focus on how clinical products link to other things like ingredients and dose forms.</p><p>Clinical products (SCD) can have single ingredients (IN) or multiple ingredients (MIN). If a clinical product contains a multiple ingredient (MIN), you can link to the base individual ingredient components (IN) using the linking table.</p><h3>Ingredient strengths</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kNyQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca105bc-0dcd-4228-8eb8-0cfe56e50ba8_245x361.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kNyQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca105bc-0dcd-4228-8eb8-0cfe56e50ba8_245x361.png 424w, https://substackcdn.com/image/fetch/$s_!kNyQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca105bc-0dcd-4228-8eb8-0cfe56e50ba8_245x361.png 848w, https://substackcdn.com/image/fetch/$s_!kNyQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca105bc-0dcd-4228-8eb8-0cfe56e50ba8_245x361.png 1272w, https://substackcdn.com/image/fetch/$s_!kNyQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca105bc-0dcd-4228-8eb8-0cfe56e50ba8_245x361.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kNyQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca105bc-0dcd-4228-8eb8-0cfe56e50ba8_245x361.png" width="245" height="361" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cca105bc-0dcd-4228-8eb8-0cfe56e50ba8_245x361.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:361,&quot;width&quot;:245,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!kNyQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca105bc-0dcd-4228-8eb8-0cfe56e50ba8_245x361.png 424w, https://substackcdn.com/image/fetch/$s_!kNyQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca105bc-0dcd-4228-8eb8-0cfe56e50ba8_245x361.png 848w, https://substackcdn.com/image/fetch/$s_!kNyQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca105bc-0dcd-4228-8eb8-0cfe56e50ba8_245x361.png 1272w, https://substackcdn.com/image/fetch/$s_!kNyQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca105bc-0dcd-4228-8eb8-0cfe56e50ba8_245x361.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Ingredient strengths are represented by the SCDC term type (TTY) in RxNorm.</p><p>Because you need to know which product and which ingredient in that product to determine strength, the ingredient strength table in SageRx links to both the clinical product and ingredient tables.</p><p>In this table, you can determine the numeric ingredient strength and map the units from RxNorm to your system to calculate total dosage for products.</p><h3>Dose forms and dose form groups</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TzXq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6372b91c-85d5-4329-90d9-30df25dde2fe_230x416.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TzXq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6372b91c-85d5-4329-90d9-30df25dde2fe_230x416.png 424w, https://substackcdn.com/image/fetch/$s_!TzXq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6372b91c-85d5-4329-90d9-30df25dde2fe_230x416.png 848w, https://substackcdn.com/image/fetch/$s_!TzXq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6372b91c-85d5-4329-90d9-30df25dde2fe_230x416.png 1272w, https://substackcdn.com/image/fetch/$s_!TzXq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6372b91c-85d5-4329-90d9-30df25dde2fe_230x416.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TzXq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6372b91c-85d5-4329-90d9-30df25dde2fe_230x416.png" width="230" height="416" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6372b91c-85d5-4329-90d9-30df25dde2fe_230x416.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:416,&quot;width&quot;:230,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:16101,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TzXq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6372b91c-85d5-4329-90d9-30df25dde2fe_230x416.png 424w, https://substackcdn.com/image/fetch/$s_!TzXq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6372b91c-85d5-4329-90d9-30df25dde2fe_230x416.png 848w, https://substackcdn.com/image/fetch/$s_!TzXq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6372b91c-85d5-4329-90d9-30df25dde2fe_230x416.png 1272w, https://substackcdn.com/image/fetch/$s_!TzXq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6372b91c-85d5-4329-90d9-30df25dde2fe_230x416.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Clinical product components (SCD) have generally one dose form (DF) in RxNorm. An oral tablet is an oral tablet, and an oral capsule is an oral capsule.</p><p>Individual dose forms (DF) can belong to multiple dose form groups (DFG). This can be helpful if you are looking for all oral products, for instance, and don't care about the difference between oral tablets and oral capsules.</p><h2>Intermediate schema</h2><p>The <code>intermediate</code> schema builds upon the <code>staging</code> schema and creates time-saving pathways between things that people working with drug data tend to want to know.</p><p>A few example tables are listed below (there are several others, too):</p><h3>NDC to clinical product</h3><p>This lets you go from NDC to all the information about the clinical product (SCD/GPCK) that NDC represents. This table does not differentiate between brands and generics.</p><h3>NDC to product</h3><p>This is similar to the table above, but if an NDC has an associated brand product, it will return the brand product information (SBD/BPCK) as opposed to the clinical product information (SCD/GPCK).</p><p>This is helpful if you are doing cost analysis and need to know why one NDC is more expensive than another even though they represent the same clinical product (hint: one NDC might be a brand product).</p><p>In addition to returning the product information (SBD/BPCK RXCUI if brand name), it also includes the clinical product information (SCD/GPCK RXCUI).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!flVr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff47ca929-3e57-4f92-a3c0-671d4b39b7e6_1335x455.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!flVr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff47ca929-3e57-4f92-a3c0-671d4b39b7e6_1335x455.png 424w, https://substackcdn.com/image/fetch/$s_!flVr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff47ca929-3e57-4f92-a3c0-671d4b39b7e6_1335x455.png 848w, https://substackcdn.com/image/fetch/$s_!flVr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff47ca929-3e57-4f92-a3c0-671d4b39b7e6_1335x455.png 1272w, https://substackcdn.com/image/fetch/$s_!flVr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff47ca929-3e57-4f92-a3c0-671d4b39b7e6_1335x455.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!flVr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff47ca929-3e57-4f92-a3c0-671d4b39b7e6_1335x455.png" width="1335" height="455" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f47ca929-3e57-4f92-a3c0-671d4b39b7e6_1335x455.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:455,&quot;width&quot;:1335,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:63212,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!flVr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff47ca929-3e57-4f92-a3c0-671d4b39b7e6_1335x455.png 424w, https://substackcdn.com/image/fetch/$s_!flVr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff47ca929-3e57-4f92-a3c0-671d4b39b7e6_1335x455.png 848w, https://substackcdn.com/image/fetch/$s_!flVr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff47ca929-3e57-4f92-a3c0-671d4b39b7e6_1335x455.png 1272w, https://substackcdn.com/image/fetch/$s_!flVr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff47ca929-3e57-4f92-a3c0-671d4b39b7e6_1335x455.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Product identifier and name for an Ozempic NDC. Can link to other tables using clinical product RXCUI for information about ingredient, strength, and dose form.</figcaption></figure></div><h3>Clinical product to ingredient strength</h3><p>This is a useful table for calculating total daily dosage for a given product or for giving users a pick list of strength options for a given clinical product.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HtFc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6e59db8-84b3-4caf-86c6-5383a05d28ba_1337x457.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HtFc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6e59db8-84b3-4caf-86c6-5383a05d28ba_1337x457.png 424w, https://substackcdn.com/image/fetch/$s_!HtFc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6e59db8-84b3-4caf-86c6-5383a05d28ba_1337x457.png 848w, https://substackcdn.com/image/fetch/$s_!HtFc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6e59db8-84b3-4caf-86c6-5383a05d28ba_1337x457.png 1272w, https://substackcdn.com/image/fetch/$s_!HtFc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6e59db8-84b3-4caf-86c6-5383a05d28ba_1337x457.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HtFc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6e59db8-84b3-4caf-86c6-5383a05d28ba_1337x457.png" width="1337" height="457" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b6e59db8-84b3-4caf-86c6-5383a05d28ba_1337x457.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:457,&quot;width&quot;:1337,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65132,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HtFc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6e59db8-84b3-4caf-86c6-5383a05d28ba_1337x457.png 424w, https://substackcdn.com/image/fetch/$s_!HtFc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6e59db8-84b3-4caf-86c6-5383a05d28ba_1337x457.png 848w, https://substackcdn.com/image/fetch/$s_!HtFc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6e59db8-84b3-4caf-86c6-5383a05d28ba_1337x457.png 1272w, https://substackcdn.com/image/fetch/$s_!HtFc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6e59db8-84b3-4caf-86c6-5383a05d28ba_1337x457.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Ingredient strength information for semaglutide ingredient in the Ozempic example above.</figcaption></figure></div><h3>Clinical product to dose form</h3><p>If you are trying to determine what dose form a clinical product is, this table can quickly give you an answer.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ab9M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa63345-bb67-476a-a155-a63a83b3fcf9_1340x456.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ab9M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa63345-bb67-476a-a155-a63a83b3fcf9_1340x456.png 424w, https://substackcdn.com/image/fetch/$s_!ab9M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa63345-bb67-476a-a155-a63a83b3fcf9_1340x456.png 848w, https://substackcdn.com/image/fetch/$s_!ab9M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa63345-bb67-476a-a155-a63a83b3fcf9_1340x456.png 1272w, https://substackcdn.com/image/fetch/$s_!ab9M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa63345-bb67-476a-a155-a63a83b3fcf9_1340x456.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ab9M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa63345-bb67-476a-a155-a63a83b3fcf9_1340x456.png" width="1340" height="456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3aa63345-bb67-476a-a155-a63a83b3fcf9_1340x456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:456,&quot;width&quot;:1340,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:68365,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ab9M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa63345-bb67-476a-a155-a63a83b3fcf9_1340x456.png 424w, https://substackcdn.com/image/fetch/$s_!ab9M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa63345-bb67-476a-a155-a63a83b3fcf9_1340x456.png 848w, https://substackcdn.com/image/fetch/$s_!ab9M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa63345-bb67-476a-a155-a63a83b3fcf9_1340x456.png 1272w, https://substackcdn.com/image/fetch/$s_!ab9M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa63345-bb67-476a-a155-a63a83b3fcf9_1340x456.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Dose form information for the Ozempic example above.</figcaption></figure></div><h2>Conclusion</h2><p>If you&#8217;ve used RxNorm data in the past, we would love to hear your thoughts on our approach to restructuring it. If you feel so inclined, please <a href="https://github.com/coderxio/sagerx">install SageRx</a> and write some queries. Let us know your thoughts and feedback in the comments. Stay tuned for more SageRx info!</p><p>&#127807;</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[How SageRx works]]></title><description><![CDATA[Because who has time to dig into a repo?]]></description><link>https://coderxio.substack.com/p/how-sagerx-works</link><guid isPermaLink="false">https://coderxio.substack.com/p/how-sagerx-works</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Wed, 20 Sep 2023 17:55:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!M0zb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41fc6f71-f8f2-4aaf-8ac2-da24e6da7a3a_1157x863.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In case you missed our <a href="https://coderxio.substack.com/p/introducing-sagerx">last post</a>, we released a platform of <a href="https://github.com/coderxio/sagerx">open drug data pipelines called SageRx</a> on GitHub. It&#8217;s open source, but I know from experience that I star a bunch of repos that seem interesting at the time and never go back to look at how they work. This post attempts to summarize the tools we chose to use to create SageRx and explain how it all comes together.</p><p><strong>Fair warning:</strong> this article is somewhat technical, so if you aren&#8217;t really interested in knowing how software works &#8220;under the hood&#8221;, you might want to skip this one. Or don&#8217;t! You might learn something and get hooked on software development!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M0zb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41fc6f71-f8f2-4aaf-8ac2-da24e6da7a3a_1157x863.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M0zb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41fc6f71-f8f2-4aaf-8ac2-da24e6da7a3a_1157x863.png 424w, https://substackcdn.com/image/fetch/$s_!M0zb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41fc6f71-f8f2-4aaf-8ac2-da24e6da7a3a_1157x863.png 848w, https://substackcdn.com/image/fetch/$s_!M0zb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41fc6f71-f8f2-4aaf-8ac2-da24e6da7a3a_1157x863.png 1272w, https://substackcdn.com/image/fetch/$s_!M0zb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41fc6f71-f8f2-4aaf-8ac2-da24e6da7a3a_1157x863.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M0zb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41fc6f71-f8f2-4aaf-8ac2-da24e6da7a3a_1157x863.png" width="1157" height="863" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41fc6f71-f8f2-4aaf-8ac2-da24e6da7a3a_1157x863.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:863,&quot;width&quot;:1157,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:386545,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!M0zb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41fc6f71-f8f2-4aaf-8ac2-da24e6da7a3a_1157x863.png 424w, https://substackcdn.com/image/fetch/$s_!M0zb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41fc6f71-f8f2-4aaf-8ac2-da24e6da7a3a_1157x863.png 848w, https://substackcdn.com/image/fetch/$s_!M0zb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41fc6f71-f8f2-4aaf-8ac2-da24e6da7a3a_1157x863.png 1272w, https://substackcdn.com/image/fetch/$s_!M0zb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41fc6f71-f8f2-4aaf-8ac2-da24e6da7a3a_1157x863.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>Overall architecture</h1><p><a href="https://www.docker.com/">Docker</a> is used to containerize the tools below. Spinning up SageRx is as simple as a few initial setup steps and then a couple of <code>docker-compose up</code> statements.</p><p>See detailed installation instructions in the GitHub repo here: <a href="https://github.com/coderxio/sagerx">https://github.com/coderxio/sagerx</a></p><p>Flow of data</p><pre><code><code>1. Airflow
   &#11015;&#65039;
2. PostgreSQL / pgAdmin
   &#11015;&#65039;
3. dbt
</code></code></pre><p>This simplistic diagram is not entirely correct because dbt also updates PostgreSQL with tables created from the transformations&#8230; but hopefully you get the general idea.</p><p>I will try to explain some highlights specific to SageRx from each of these steps in the sections that follow.</p><h2>1. Airflow</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RHxy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RHxy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 424w, https://substackcdn.com/image/fetch/$s_!RHxy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 848w, https://substackcdn.com/image/fetch/$s_!RHxy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 1272w, https://substackcdn.com/image/fetch/$s_!RHxy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RHxy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png" width="1456" height="758" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:758,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RHxy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 424w, https://substackcdn.com/image/fetch/$s_!RHxy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 848w, https://substackcdn.com/image/fetch/$s_!RHxy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 1272w, https://substackcdn.com/image/fetch/$s_!RHxy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The SageRx Airflow dashboard containing all of the available data sources at the time of this writing.</figcaption></figure></div><p><a href="https://airflow.apache.org/">Airflow</a> is the data pipeline tool we chose for this project because it is open source, supported by Apache, and seems to be widely used by a variety of industries. All of the business logic relating to where the raw open drug data lives (NLM / CMS / FDA / etc), what format it is stored in, how often it is updated, how to unpack and manipulate it, etc is stored within Airflow &#8220;DAGs&#8221; (<a href="https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/dags.html">directed acyclic graphs</a>) - which are basically just Python scripts.</p><p>Airflow is used for the Extraction and Loading (EL) of the overall Extract-Load-Transform (ELT) data engineering process.</p><h3>Timing of data source updates</h3><p>The update timing of data sources is maintained here. Some data sources are updated weekly, others monthly, others yearly, etc. With the flip of a switch, you can automate recurring updates of any data source.</p><h3>Authentication</h3><p>Select data sources (RxNorm) require a free license key even though the parts of the data used from the source are open. Airflow handles the authentication steps required for these scenarios.</p><h3>Changing file names</h3><p>Some raw data file names change with every release - possibly including a date at the very least. Some files aren't regularly updated on the same day of the month and require an initial API call to determine the most recent file before downloading.</p><h3>Back-loading of data</h3><p>Some data sources have data going back several years. In situations where loading all of this data is beneficial (NADAC, for instance), Airflow can automate the backfill process of historic data.</p><h3>Unzipping of files</h3><p>Some data sources use zipped files one or more layers deep. Airflow, combined with custom functions, handles unzipping these files and only loading the necessary ones into the database.</p><h3>Loading into the database</h3><p>SageRx utilizes the Postgres COPY function to load data directly from a file into a database. We think this is the most efficient way to load data into a database. This can handle the vast majority of file types (CSV, TSV, RRF, etc).</p><p>In scenarios where the COPY function can't handle a file type (Excel files, for instance), we use Python / pandas to transform the data into a format that can be loaded into the database.</p><h2>2. PostgreSQL / pgAdmin</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oGuA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oGuA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 424w, https://substackcdn.com/image/fetch/$s_!oGuA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 848w, https://substackcdn.com/image/fetch/$s_!oGuA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 1272w, https://substackcdn.com/image/fetch/$s_!oGuA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oGuA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png" width="1456" height="758" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:758,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oGuA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 424w, https://substackcdn.com/image/fetch/$s_!oGuA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 848w, https://substackcdn.com/image/fetch/$s_!oGuA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 1272w, https://substackcdn.com/image/fetch/$s_!oGuA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">SageRx PostgreSQL database as accessed through pgAdmin (available with SageRx).</figcaption></figure></div><p>Currently, all data ends up in a <a href="https://www.postgresql.org/">PostgreSQL</a> database. We chose PostgreSQL because it is open source, supported by a large community, and has excellent documentation.</p><p>We suspect that there will be a need for connectors to other types of databases (cloud, data lake, etc), but initially we wanted to keep it simple.</p><h3>Schemas</h3><p>The three main schemas in the PostgreSQL database are:</p><ol><li><p><code>datasource</code></p></li><li><p><code>staging</code></p></li><li><p><code>intermediate</code></p></li></ol><p>All of the raw data from Airflow ends up in the <code>datasource</code> schema in as close to its raw format as possible. There may be slight differences solely due to column type, but the intent is to leave it in raw format.</p><p>From there, it is transformed by dbt (as described in step 3 below) and the resulting data ends up in the <code>staging</code> and <code>intermediate</code> schemas. More information about this in the dbt section below.</p><p>Eventually, we may have some data mart data in the <code>mart</code> schema and possibly a separate <code>flatfile</code> schema for data meant to be loaded into flat files for easy download.</p><h3>Custom functions</h3><p><strong>NDC formatter</strong></p><p>Due to the need for common transformations like taking a hyphenated NDC and converting it to NDC11 format, we created custom Postgres functions to handle this.</p><p>We made this decision prior to implementing dbt, so a future optimization may be converting these functions from Postgres to dbt. However, they come in handy when writing queries directly in pgAdmin.</p><pre><code>select ndc_to_11('1234-5678-90')

/* returns 01234567890 */</code></pre><h3>Connecting to the database</h3><p><strong>Using pgAdmin</strong></p><p>It is not necessary to use <a href="https://www.pgadmin.org/">pgAdmin</a> to connect to the database, but it makes it easy to run some quick queries and has (in our opinion) a great user interface.</p><p>By default pgAdmin is hosted on port 8002.</p><p><strong>Connecting directly</strong></p><p>Since we use Postgres as the database, connecting to a hosted version of SageRx is just like connecting to any other Postgres database.</p><p>By default, the connection information is configured as listed below.</p><pre><code><code>server: &lt;&lt;server_address&gt;&gt;:5432
username: sagerx
password: sagerx
</code></code></pre><h2>3. dbt</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0zkk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8de869-0d0e-43e8-9909-63ddb8fd9f94_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0zkk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8de869-0d0e-43e8-9909-63ddb8fd9f94_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!0zkk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8de869-0d0e-43e8-9909-63ddb8fd9f94_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!0zkk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8de869-0d0e-43e8-9909-63ddb8fd9f94_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!0zkk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8de869-0d0e-43e8-9909-63ddb8fd9f94_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0zkk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8de869-0d0e-43e8-9909-63ddb8fd9f94_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb8de869-0d0e-43e8-9909-63ddb8fd9f94_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:197532,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0zkk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8de869-0d0e-43e8-9909-63ddb8fd9f94_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!0zkk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8de869-0d0e-43e8-9909-63ddb8fd9f94_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!0zkk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8de869-0d0e-43e8-9909-63ddb8fd9f94_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!0zkk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8de869-0d0e-43e8-9909-63ddb8fd9f94_1920x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An example of a dbt staging model in SageRx. Note that these models are basically just SQL files.</figcaption></figure></div><p><a href="https://www.getdbt.com/">Data build tool</a> (commonly known as <a href="https://www.getdbt.com/">dbt</a>) is where the Transformation (T) of the Extract-Load-Transform (ELT) data engineering process happens.</p><p>The steps of the dbt process line up nicely with schemas in Postgres. The two main schemas populated by dbt are <code>staging</code> and <code>intermediate</code>.</p><h3>Staging</h3><p>The staging step is where normalization of data generally happens (i.e. converting to NDC11, formatting date columns as DATE data types, etc).</p><p>It is also where basic data modeling begins happening. If the <code>datasource</code> schema contains <a href="https://docs.getdbt.com/guides/best-practices/how-we-structure/2-staging">raw energy and quarks</a>, the <code>staging</code> schema condenses and refines this material into individual atoms we will use to build more intricate and useful structures. Some examples:</p><ul><li><p><strong>FDA NDC Directory</strong> - Class tables in this schema have one row per drug class per product. In the raw data, this information is crammed into a single cell, delimited by semicolons.</p></li><li><p><strong>NLM RxNorm</strong> - Major transformation of RxNorm data happens at this step. Raw RxNorm tables are converted into data models representing NDCs, clinical products, brand products, ingredients, dose forms, etc.</p></li><li><p><strong>CMS NADAC</strong> - De-duplication of data happens at this step. Additionally, differences in percentage and dollars is calculated between each price change reported in the NADAC data.</p></li></ul><h3>Intermediate</h3><p>The <code>intermediate</code> schema uses the building blocks of the <code>staging</code> schema to create more complex, and sometimes more useful, data models. Continuing the raw energy &#8594; atoms analogy, the <code>intermediate</code> schema is where we use the atoms from the <code>staging</code> schema to create molecules.</p><p>Some examples of intermediate tables:</p><ul><li><p><strong>NLM RxNorm</strong> - The intermediate schema of RxNorm data contains extremely useful tables that let you go from NDC to clinical product information (ingredients, dose forms, etc) with a single select statement.</p></li><li><p><strong>CMS NADAC</strong> - This table contains data from the NADAC staging table, but filtered to only current prices based on the current flag defined in the staging table.</p></li></ul><h3>Documentation</h3><p>Documentation is a first class citizen in dbt (and SageRx), and helps support the understanding of the transformations that happen so that (in addition to the underlying queries being open source) end users can feel confident when using the resulting data.</p><p>Documentation lives in YAML files inside of the folders of the <code>models/</code> directory, but dbt also generates a user-friendly website (<code>dbt docs generate</code>) that can be hosted (<code>dbt docs serve</code> - pending Docker integration) to make documentation easily accessible to consumers of the data.</p><h3>Seeds</h3><p><a href="https://docs.getdbt.com/docs/build/seeds">Seeds</a> are a dbt feature, and are meant to be small CSV files that can be loaded as tables in a different <code>seeds</code> schema.</p><p>SageRx doesn't currently utilize seeds for much, but one potential use could be a repository of "fixes" or "flags" for incorrect or out of date open data (i.e. take the raw source data and &#8220;patch&#8221; it with corrections or modifications stored in seeds).</p><h3>Macros</h3><p><a href="https://docs.getdbt.com/docs/build/jinja-macros">Macros</a> are a dbt feature that utilizes <a href="https://docs.getdbt.com/docs/build/jinja-macros">Jinja 2</a> templating to allow you to create SQL "functions" or easily re-usable SQL code that can be updated in one place and instantly update all the models where it is used.</p><h1>Conclusion</h1><p>If you&#8217;re still reading this, it probably means you have experience or are interested in the technical building blocks used to build a data pipeline. Hopefully I did a good enough job explaining the tools we chose to make ours (there are many others out there). I&#8217;m definitely open to feedback from anyone experienced in this area if it could make SageRx more useful or easier to maintain.</p><p>I touched a little on how our data pipeline addressed things specific to open drug data sources, but I plan to dig into the drug data-specific examples in a future post - specifically about RxNorm. If you&#8217;re not subscribed already, please subscribe now to follow along and get updates in your inbox.</p><p>Thanks for reading!</p><p>&#127807;</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Introducing SageRx 🌿]]></title><description><![CDATA[Pharmacists data engineering open drug data]]></description><link>https://coderxio.substack.com/p/introducing-sagerx</link><guid isPermaLink="false">https://coderxio.substack.com/p/introducing-sagerx</guid><dc:creator><![CDATA[Joey LeGrand]]></dc:creator><pubDate>Tue, 12 Sep 2023 13:59:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KTMd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc4350e-68cf-41d6-abce-a203096d397a_480x640.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There's so much open drug data available online for free and maintained by different areas of the federal government. NLM RxNorm and DailyMed. CMS NADAC and Medicaid Utilization. FDA NDC Directory and Drug Enforcement Reports. These are just a few examples off the top of my head, but there are dozens more.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderx.io/sagerx&quot;,&quot;text&quot;:&quot;SageRx Website&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderx.io/sagerx"><span>SageRx Website</span></a></p><p>We spent the last couple of years learning as much as we could about these data sources and using them in our work wherever possible. In the process of doing so, we experienced many of the pain points associated with using any variety of data sources - but <a href="https://coderxio.substack.com/p/open-does-not-mean-easy-when-it-comes">specifically with open drug data</a>. These are things like different file formats, different update intervals, and non-standardized formatting of common fields like NDCs - just to name a few.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KTMd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc4350e-68cf-41d6-abce-a203096d397a_480x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KTMd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc4350e-68cf-41d6-abce-a203096d397a_480x640.png 424w, https://substackcdn.com/image/fetch/$s_!KTMd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc4350e-68cf-41d6-abce-a203096d397a_480x640.png 848w, https://substackcdn.com/image/fetch/$s_!KTMd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc4350e-68cf-41d6-abce-a203096d397a_480x640.png 1272w, https://substackcdn.com/image/fetch/$s_!KTMd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc4350e-68cf-41d6-abce-a203096d397a_480x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KTMd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc4350e-68cf-41d6-abce-a203096d397a_480x640.png" width="480" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/adc4350e-68cf-41d6-abce-a203096d397a_480x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KTMd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc4350e-68cf-41d6-abce-a203096d397a_480x640.png 424w, https://substackcdn.com/image/fetch/$s_!KTMd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc4350e-68cf-41d6-abce-a203096d397a_480x640.png 848w, https://substackcdn.com/image/fetch/$s_!KTMd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc4350e-68cf-41d6-abce-a203096d397a_480x640.png 1272w, https://substackcdn.com/image/fetch/$s_!KTMd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc4350e-68cf-41d6-abce-a203096d397a_480x640.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The original &#8220;napkin drawing&#8221; vision of SageRx.</figcaption></figure></div><p>This led to us falling backwards down a rabbit hole of discovering and learning as much as we could about data engineering. Early on, we realized that applying some basic data engineering principles to these open drug data sources could address many of these pain points. After a while, we started taking it a step further and transforming the raw data with our clinical and domain knowledge in pharmacy (did I mention we're <a href="https://coderx.io/">pharmacists who code</a>?). Now, it feels like it could either be the start of something big or at least something really useful for a few groups of people.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zpLq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15812fc4-20b2-4f89-b2ec-8a39d230db06_397x531.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zpLq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15812fc4-20b2-4f89-b2ec-8a39d230db06_397x531.png 424w, https://substackcdn.com/image/fetch/$s_!zpLq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15812fc4-20b2-4f89-b2ec-8a39d230db06_397x531.png 848w, https://substackcdn.com/image/fetch/$s_!zpLq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15812fc4-20b2-4f89-b2ec-8a39d230db06_397x531.png 1272w, https://substackcdn.com/image/fetch/$s_!zpLq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15812fc4-20b2-4f89-b2ec-8a39d230db06_397x531.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zpLq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15812fc4-20b2-4f89-b2ec-8a39d230db06_397x531.png" width="397" height="531" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/15812fc4-20b2-4f89-b2ec-8a39d230db06_397x531.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:531,&quot;width&quot;:397,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zpLq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15812fc4-20b2-4f89-b2ec-8a39d230db06_397x531.png 424w, https://substackcdn.com/image/fetch/$s_!zpLq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15812fc4-20b2-4f89-b2ec-8a39d230db06_397x531.png 848w, https://substackcdn.com/image/fetch/$s_!zpLq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15812fc4-20b2-4f89-b2ec-8a39d230db06_397x531.png 1272w, https://substackcdn.com/image/fetch/$s_!zpLq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15812fc4-20b2-4f89-b2ec-8a39d230db06_397x531.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Normalizing RxNorm since 2021.</figcaption></figure></div><p>We built a platform of one-click data pipelines that that can automatically <strong>extract</strong> up-to-the-day current open drug data and not only <strong>load</strong> it all into a common database so it&#8217;s easier to work with, but also <strong>transform</strong> it into something greater than the sum of its parts.</p><p><strong>Oh - and we're open sourcing it all. </strong><a href="https://github.com/coderxio/sagerx">https://github.com/coderxio/sagerx</a></p><p>We've already built pipelines for the things that <em>we</em> use frequently (<a href="https://coderxio.substack.com/p/restructuring-rxnorm-for-humans">RxNorm</a>, FDA NDC Directory, <a href="https://coderxio.substack.com/p/making-open-drug-pricing-data-more">NADAC</a>, etc), but there's so much more potential. Our biggest challenge with this project has been focus. There so many more data sources that could be loaded and transformed, but if we spend a lot of time taking the effort to build one of these pipelines and nobody knows about it or uses it, then what's the point?</p><p>We want to explain what we've been working on and how it works. We want to open the doors and let people poke around. And we want people to try it out. And if somebody really likes it, we want to focus our efforts on building something that makes them like it even more.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RHxy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RHxy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 424w, https://substackcdn.com/image/fetch/$s_!RHxy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 848w, https://substackcdn.com/image/fetch/$s_!RHxy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 1272w, https://substackcdn.com/image/fetch/$s_!RHxy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RHxy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png" width="1456" height="758" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:758,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:145062,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RHxy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 424w, https://substackcdn.com/image/fetch/$s_!RHxy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 848w, https://substackcdn.com/image/fetch/$s_!RHxy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 1272w, https://substackcdn.com/image/fetch/$s_!RHxy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48c50f56-e32f-4cb2-8d4f-a16c358315f8_1919x999.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">SageRx uses Airflow to schedule jobs to extract, load, and transform (using dbt) open drug data.</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oGuA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oGuA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 424w, https://substackcdn.com/image/fetch/$s_!oGuA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 848w, https://substackcdn.com/image/fetch/$s_!oGuA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 1272w, https://substackcdn.com/image/fetch/$s_!oGuA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oGuA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png" width="1456" height="758" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:758,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:270880,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oGuA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 424w, https://substackcdn.com/image/fetch/$s_!oGuA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 848w, https://substackcdn.com/image/fetch/$s_!oGuA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 1272w, https://substackcdn.com/image/fetch/$s_!oGuA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69d34-1478-4312-a601-68fe3f8b8f2f_1919x999.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Data ends up in a PostgreSQL database and can be queried using pgAdmin (included with SageRx) or via any SQL editor of your choice.</figcaption></figure></div><p>This is different from the commercial drug database you might be familiar with. </p><ol><li><p>For one, not only is the code and SQL to do the data transformations completely <a href="https://github.com/coderxio/sagerx">open source</a>, the documentation is also open and written by pharmacist / developer hybrids who know how to translate pharmacy domain knowledge into developer-friendly concepts. </p></li><li><p>Second, it is fairly lightweight, easy to spin up (using Docker), and pretty much runs itself. Even not-super-technical people can add their own custom data transformations just by writing some SQL. And - if you think your work could benefit others - you could even contribute a pull request to the overall open-source SageRx project. </p></li><li><p>Lastly, at its core, SageRx is based on open common standards that promote interoperability - instead of licensed, proprietary coding systems that make it difficult to share data between organizations.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sA19!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe59ef83d-1414-4797-ac8b-e78b79990536_810x323.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sA19!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe59ef83d-1414-4797-ac8b-e78b79990536_810x323.png 424w, https://substackcdn.com/image/fetch/$s_!sA19!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe59ef83d-1414-4797-ac8b-e78b79990536_810x323.png 848w, https://substackcdn.com/image/fetch/$s_!sA19!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe59ef83d-1414-4797-ac8b-e78b79990536_810x323.png 1272w, https://substackcdn.com/image/fetch/$s_!sA19!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe59ef83d-1414-4797-ac8b-e78b79990536_810x323.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sA19!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe59ef83d-1414-4797-ac8b-e78b79990536_810x323.png" width="496" height="197.78765432098766" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e59ef83d-1414-4797-ac8b-e78b79990536_810x323.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:323,&quot;width&quot;:810,&quot;resizeWidth&quot;:496,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sA19!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe59ef83d-1414-4797-ac8b-e78b79990536_810x323.png 424w, https://substackcdn.com/image/fetch/$s_!sA19!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe59ef83d-1414-4797-ac8b-e78b79990536_810x323.png 848w, https://substackcdn.com/image/fetch/$s_!sA19!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe59ef83d-1414-4797-ac8b-e78b79990536_810x323.png 1272w, https://substackcdn.com/image/fetch/$s_!sA19!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe59ef83d-1414-4797-ac8b-e78b79990536_810x323.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">The original SageRx creators - Joey LeGrand, Kent Bridgeman, and Yevgeny (Eugene) Bulochnik.</figcaption></figure></div><p>To be clear, we&#8217;re not a huge organization of people scrubbing the source data and phoning manufacturers to fill in gaps&#8230; but it&#8217;s not our intention to be that. We want to build something sustainable with very little overhead that might make drug data more accessible and understandable for people that need to work with it. Our hope is that SageRx can benefit (at the very least):</p><ul><li><p>Startup founders</p></li><li><p>Researchers</p></li><li><p>Data analysts</p></li><li><p>Maybe you?</p></li></ul><p>If any of this interests you, please star the <a href="https://github.com/coderxio/sagerx">repo</a>, join our <a href="https://join.slack.com/t/coderx/shared_invite/zt-5b8e9kr4-PsKAVe4crGmECQyyxDIJgQ">Slack</a>, and/or shoot us an <a href="mailto:sagerx@coderx.io">email</a>. Oh - and please be patient as we try to get our documentation in order over the next few weeks. If you have questions or need help getting started in the meantime, the #proj-sagerx channel of our <a href="https://join.slack.com/t/coderx/shared_invite/zt-5b8e9kr4-PsKAVe4crGmECQyyxDIJgQ">Slack</a> is an excellent resource for support.</p><p>Stay tuned for more fun-filled SageRx content in the near future. Expect to see some documentation on SageRx as well as tutorials and example queries. Thanks for reading and let us know if you have any questions or feedback in the comments!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderx.io/sagerx&quot;,&quot;text&quot;:&quot;SageRx Website&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://coderx.io/sagerx"><span>SageRx Website</span></a></p><p>&#127807;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://coderxio.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Pharmacy and interoperability, gov challenge for LLMs, and AI Partnerships]]></title><description><![CDATA[Updates from June and July 2023]]></description><link>https://coderxio.substack.com/p/pharmacy-and-interoperability-gov</link><guid isPermaLink="false">https://coderxio.substack.com/p/pharmacy-and-interoperability-gov</guid><pubDate>Mon, 31 Jul 2023 19:01:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F82ec2b97-44ad-49ee-98ad-167e88c587dd_500x500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>Tools</h1><ul><li><p><a href="https://developer.caryrx.com/docs/caryrx-api/49ed6b036c3ee-use-case">CaryRx</a> - Example of documenting accessible APIs for prescription fulfillment.</p></li><li><p><a href="http://deadlockempire.github.io/">The Deadlock Empire</a> - Multi-threaded programming game, shared by CodeRx member Benjamin Jolley.</p></li><li><p><a href="https://github.com/AntonOsika/gpt-engineer">ChatGPT Engineer</a> - Specify what you want it to build, the AI asks for clarification, and then builds it.</p></li></ul><h1>News</h1><ul><li><p><a href="https://academic.oup.com/jamiaopen/article/6/3/ooad052/7223896?login=true">Published!</a> - The work Team CodeRx did on the Medication Diversification Tool (MDT) as part of the Synthetic Health Data Challenge in 2021 was published in JAMIA Open with the title: &#8220;A novel method to create realistic synthetic medication data&#8221;. Congratulations to CodeRx Members: Authors - Robert Hodges, Kristen Tokunaga, Joseph LeGrand; Team member also included - Kent Bridgeman, Yevgeny (Eugene) Bulochnik, Dalton Fabian</p></li><li><p><a href="https://coderx.slack.com/archives/CBNDJ9PK7/p1686595678581309">AI Partnerships</a> - GalenAI, an AI search engine for clinicians founded by CodeRx member Jonathan Adly, announced a new partnership with cloud pharmacy management software DRX, founded by CodeRx user Dan Safee</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jFUC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b102f38-28b9-40e2-bd7c-0fe1feb1ebc1_565x260.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jFUC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b102f38-28b9-40e2-bd7c-0fe1feb1ebc1_565x260.png 424w, https://substackcdn.com/image/fetch/$s_!jFUC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b102f38-28b9-40e2-bd7c-0fe1feb1ebc1_565x260.png 848w, https://substackcdn.com/image/fetch/$s_!jFUC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b102f38-28b9-40e2-bd7c-0fe1feb1ebc1_565x260.png 1272w, https://substackcdn.com/image/fetch/$s_!jFUC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b102f38-28b9-40e2-bd7c-0fe1feb1ebc1_565x260.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jFUC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b102f38-28b9-40e2-bd7c-0fe1feb1ebc1_565x260.png" width="565" height="260" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b102f38-28b9-40e2-bd7c-0fe1feb1ebc1_565x260.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:260,&quot;width&quot;:565,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21627,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jFUC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b102f38-28b9-40e2-bd7c-0fe1feb1ebc1_565x260.png 424w, https://substackcdn.com/image/fetch/$s_!jFUC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b102f38-28b9-40e2-bd7c-0fe1feb1ebc1_565x260.png 848w, https://substackcdn.com/image/fetch/$s_!jFUC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b102f38-28b9-40e2-bd7c-0fe1feb1ebc1_565x260.png 1272w, https://substackcdn.com/image/fetch/$s_!jFUC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b102f38-28b9-40e2-bd7c-0fe1feb1ebc1_565x260.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p> </p></li><li><p><a href="https://www.challenge.gov/?challenge=appliedaichallengellms">Applied AI Challenge: Large Language Models (LLMs)</a> - Launch of challenge aims for Improving Federal Government Services through the Use of LLMs </p></li><li><p><a href="https://www.beckershospitalreview.com/cybersecurity/amazons-pillpack-suffers-data-breach.html">Amazon's PillPack suffers data breach</a></p></li><li><p><a href="https://www.hcinnovationgroup.com/interoperability-hie/interoperability/news/53063666/onc-hitac-creates-pharmacy-interoperability-task-force">ONC HITAC Creates Pharmacy Interoperability Task Force</a> - Task force to identifying recommendations to support interoperability between pharmacy constituents</p></li><li><p><a href="https://arstechnica.com/science/2023/06/ultra-low-cost-smartphone-attachment-measures-blood-pressure-at-home/">Ultra low-cost smartphone attachment measures blood pressure at home</a></p></li></ul><h1>Jobs / opportunities</h1><ul><li><p><a href="https://www.linkedin.com/jobs/view/3670847018/?refId=n9yLYIv9RhCwQsqaF0lPEg%3D%3D&amp;trackingId=n9yLYIv9RhCwQsqaF0lPEg%3D%3D">Walmart Health - Clinical Informatics Specialist - Bentonville, AR </a></p></li><li><p><a href="https://rxante.bamboohr.com/careers/153">RxAnte - Director, Web Services - Remote</a></p></li></ul><h1>Thread highlights</h1><ul><li><p><a href="https://coderx.slack.com/archives/C018K8YFZSB/p1686673967633779">Using openFDA APIs for reference</a> - Discussion, documentation, and an easy to read narrative article (<a href="https://medium.com/@Ospreyeagle/identifying-fda-approved-indications-for-drugs-using-nlp-97a0b101ffb4">Identifying FDA approved indications for drugs (using NLP)</a>) from user Manas Kaushik. </p></li><li><p><a href="https://coderx.slack.com/archives/C018K8YFZSB/p1687772244148709">Pet projects: Check printing from Vue App</a> (Via CodeRx member Dan Safee)</p></li></ul><h1>Member/Community spotlights </h1><ul><li><p>LinkedIn reached 1,000+ followers! <a href="https://www.linkedin.com/company/coderx/">Check out and follow</a> if you haven&#8217;t yet!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5w7X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43efece-f8b4-48fd-9f16-e6ba6b0949ac_591x210.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5w7X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43efece-f8b4-48fd-9f16-e6ba6b0949ac_591x210.png 424w, https://substackcdn.com/image/fetch/$s_!5w7X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43efece-f8b4-48fd-9f16-e6ba6b0949ac_591x210.png 848w, https://substackcdn.com/image/fetch/$s_!5w7X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43efece-f8b4-48fd-9f16-e6ba6b0949ac_591x210.png 1272w, https://substackcdn.com/image/fetch/$s_!5w7X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43efece-f8b4-48fd-9f16-e6ba6b0949ac_591x210.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5w7X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43efece-f8b4-48fd-9f16-e6ba6b0949ac_591x210.png" width="591" height="210" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f43efece-f8b4-48fd-9f16-e6ba6b0949ac_591x210.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:210,&quot;width&quot;:591,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44514,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5w7X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43efece-f8b4-48fd-9f16-e6ba6b0949ac_591x210.png 424w, https://substackcdn.com/image/fetch/$s_!5w7X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43efece-f8b4-48fd-9f16-e6ba6b0949ac_591x210.png 848w, https://substackcdn.com/image/fetch/$s_!5w7X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43efece-f8b4-48fd-9f16-e6ba6b0949ac_591x210.png 1272w, https://substackcdn.com/image/fetch/$s_!5w7X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43efece-f8b4-48fd-9f16-e6ba6b0949ac_591x210.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><p></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The CodeRx Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Informatics in the community, VA pharmacy disruptions, and AI in Python data libraries ]]></title><description><![CDATA[Updates from April and May 2023]]></description><link>https://coderxio.substack.com/p/informatics-in-the-community-va-pharmacy</link><guid isPermaLink="false">https://coderxio.substack.com/p/informatics-in-the-community-va-pharmacy</guid><pubDate>Thu, 25 May 2023 17:38:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!RbzB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff414ddde-b2a7-43ab-a572-2188a6170976_800x998.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>Tools</h1><ul><li><p><a href="https://github.com/TheR1D/shell_gpt">ShellGPT</a> - A command-line productivity tool powered by OpenAI's GPT models. &#8220;We can leverage AI capabilities to generate shell commands, code snippets, comments, and documentation, among other things.&#8221;</p></li><li><p><a href="https://vitejs.dev/">ViteJS</a> - New approach for front-end design, shared as a part of a <a href="https://www.robinwieruch.de/react-starter/">list/article</a> on best tools for React.</p></li><li><p><a href="https://github.com/gventuri/pandas-ai">Pandas AI</a> - Python library that integrates generative artificial intelligence capabilities into Pandas, making dataframes conversational.</p></li><li><p><a href="https://apps.apple.com/app/id834992816">Coverage Search</a> (iOS app link) - Quickly understand how every health plan and PBM covers all FDA approved medications in your geography.</p></li><li><p><a href="https://www.linkedin.com/posts/ruben-hassid_artificialintelligence-ai-technology-activity-7057333561044914176-k4X9/?utm_source=share&amp;utm_medium=member_desktop">27 AI sites</a> - Shared from LinkedIn (<a href="https://www.linkedin.com/posts/ruben-hassid_artificialintelligence-ai-technology-activity-7057333561044914176-k4X9?utm_source=share&amp;utm_medium=member_desktop">Ruben Hassid</a>), via Joey LeGrand.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RbzB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff414ddde-b2a7-43ab-a572-2188a6170976_800x998.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RbzB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff414ddde-b2a7-43ab-a572-2188a6170976_800x998.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RbzB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff414ddde-b2a7-43ab-a572-2188a6170976_800x998.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RbzB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff414ddde-b2a7-43ab-a572-2188a6170976_800x998.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RbzB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff414ddde-b2a7-43ab-a572-2188a6170976_800x998.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RbzB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff414ddde-b2a7-43ab-a572-2188a6170976_800x998.jpeg" width="800" height="998" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f414ddde-b2a7-43ab-a572-2188a6170976_800x998.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:998,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;My AI tool list&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="My AI tool list" title="My AI tool list" srcset="https://substackcdn.com/image/fetch/$s_!RbzB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff414ddde-b2a7-43ab-a572-2188a6170976_800x998.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RbzB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff414ddde-b2a7-43ab-a572-2188a6170976_800x998.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RbzB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff414ddde-b2a7-43ab-a572-2188a6170976_800x998.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RbzB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff414ddde-b2a7-43ab-a572-2188a6170976_800x998.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li></ul><h1>News</h1><ul><li><p><a href="https://www.getdbt.com/blog/analytics-engineering-next-step-forwards/">The next big step forwards for analytics engineering</a> - news from &#8220;CodeRx&#8221;(/Kent Bridgemen) fan platform of dbt, saying &#8220;many software engineering features finally making it to analytics through DBT.&#8221;</p></li><li><p><a href="https://healthapiguy.substack.com/p/the-only-three-ways-to-integrate">Super Integration Fighter III</a> - From Health API Guy Brendan Keeler, a great review of direct-to-database strategies.</p></li><li><p><a href="https://federalnewsnetwork.com/it-modernization/2023/05/va-ehr-leader-calls-for-accelerated-delivery-in-fixes-to-pharmacy-disruptions/">VA EHR leader calls for &#8216;accelerated delivery&#8217; in fixes to pharmacy disruptions</a></p></li></ul><h1>Jobs / opportunities</h1><ul><li><p><a href="https://wk.wd3.myworkdayjobs.com/en-US/External/job/USA---Indianapolis-IN/Clinical-Content-Consultant---Pharmacist--Medi-Span_R0035094?source=Indeed_Posting">Clinical Content Consultant - Pharmacist, Medi-Span</a></p></li></ul><h1>Thread highlights</h1><ul><li><p><a href="https://coderx.slack.com/archives/C01H24QJ8RK/p1682627484178419">Informatics in the Community Pharmacy setting?</a> - Great review of comparing settings for informatics, great quote (&#8220;I've seen roles for BI Analyst with CVS on LinkedIn that have higher salaries compared to regular pharmacists.")</p></li></ul><h1>Member spotlights </h1><ul><li><p>Congrats to our first-ever student capstone team! The team of Paula Sharoubeem, David Poling, Vignesh Senguttuvan from the University of Pittsburgh and mentor Joey LeGrand (with help from Kent Bridgeman, Eugene Bulochnik). See their work/outcome presentation <a href="https://youtu.be/am80JtD7zVs">here</a>, slide from their presentation below: </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Sw8j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0014363d-757a-4fd3-8c03-a40d72bc2d3a_960x540.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Sw8j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0014363d-757a-4fd3-8c03-a40d72bc2d3a_960x540.png 424w, https://substackcdn.com/image/fetch/$s_!Sw8j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0014363d-757a-4fd3-8c03-a40d72bc2d3a_960x540.png 848w, https://substackcdn.com/image/fetch/$s_!Sw8j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0014363d-757a-4fd3-8c03-a40d72bc2d3a_960x540.png 1272w, https://substackcdn.com/image/fetch/$s_!Sw8j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0014363d-757a-4fd3-8c03-a40d72bc2d3a_960x540.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Sw8j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0014363d-757a-4fd3-8c03-a40d72bc2d3a_960x540.png" width="960" height="540" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0014363d-757a-4fd3-8c03-a40d72bc2d3a_960x540.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:540,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65294,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Sw8j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0014363d-757a-4fd3-8c03-a40d72bc2d3a_960x540.png 424w, https://substackcdn.com/image/fetch/$s_!Sw8j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0014363d-757a-4fd3-8c03-a40d72bc2d3a_960x540.png 848w, https://substackcdn.com/image/fetch/$s_!Sw8j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0014363d-757a-4fd3-8c03-a40d72bc2d3a_960x540.png 1272w, https://substackcdn.com/image/fetch/$s_!Sw8j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0014363d-757a-4fd3-8c03-a40d72bc2d3a_960x540.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://coderxio.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The CodeRx Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>