Some checks failed
CI / skinny-install (aco) (push) Successful in 1m12s
CI / skinny-install (api) (push) Successful in 30s
CI / skinny-install (bcda) (push) Successful in 36s
CI / skinny-install (bib) (push) Successful in 35s
CI / skinny-install (bls) (push) Successful in 27s
CI / skinny-install (ccw) (push) Successful in 32s
CI / skinny-install (cli) (push) Successful in 41s
CI / skinny-install (cms) (push) Successful in 37s
CI / skinny-install (conf) (push) Successful in 38s
CI / skinny-install (opps) (push) Successful in 33s
CI / skinny-install (perf) (push) Successful in 38s
CI / skinny-install (pfs) (push) Successful in 38s
CI / skinny-install (rex) (push) Successful in 34s
Deploy / build-scan-report (push) Failing after 46s
Infra CI / notebooks (push) Failing after 25s
Infra CI / zotero (push) Successful in 12s
Infra CI / docs (push) Failing after 16s
CI / lint-test (push) Failing after 11m2s
Infra CI / mc (push) Successful in 21s
Infra CI / api (push) Successful in 29s
Package Supply Chain / pkg-supply-chain (push) Failing after 41s
Mail: Maddy on DO (corwins.media+Resend, fhirworx.io+Postmark), touchless/stateless/idempotent. Gitea SMTP via env_file. CMS inbox at cmsupdates@mail.fhirworx.io with IMAP→bib poller. Bib: regulations.gov v4 client, Federal Register discovery, 164K comment backfill (running), IMAP email ingest, Zotero sync routing. PRISMA: altcha PoW solver, CrossRef DOI resolution, 83/129 PDFs. Zotero: schema parity, ops module, CLI, fail-fast guard. CI: docs.Dockerfile COPY glob fix (tracks #341). Infra: Gitea+marimo fhirworx themes, IOM/OIG modules.
666 lines
26 KiB
Python
666 lines
26 KiB
Python
"""Collect grey literature for skin substitutes research.
|
|
|
|
Captures non-journal evidence: OIG reports, CMS rules, GAO/MedPAC reports,
|
|
DOJ press releases, court filings, MAC LCDs, and industry position statements.
|
|
|
|
Each document is stored in bib.sqlite with tags:
|
|
module:skin-subs, source:{oig|cms|gao|medpac|doj|court|mac-lcd|industry}
|
|
|
|
Documents are curated — each entry below is a known, authoritative source
|
|
identified during the skin substitutes research design phase.
|
|
|
|
Usage:
|
|
uv run python dev/scripts/collect_grey_lit_skin_subs.py
|
|
uv run python dev/scripts/collect_grey_lit_skin_subs.py --dry-run
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
from dataclasses import dataclass, field
|
|
from datetime import datetime
|
|
|
|
from bib.item import Source
|
|
from bib.store import Store
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Grey literature catalogue
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
|
@dataclass
|
|
class GreyLitEntry:
|
|
"""A single grey literature document to capture."""
|
|
|
|
title: str
|
|
url: str
|
|
source_tag: str # oig, cms, gao, medpac, doj, court, mac-lcd, industry
|
|
type_tag: str # report, rule, press-release, filing, lcd, position
|
|
date_published: str # YYYY or YYYY-MM-DD
|
|
institution: str
|
|
abstract: str = ""
|
|
extra: str = ""
|
|
extra_tags: list[str] = field(default_factory=list)
|
|
|
|
|
|
# --- OIG Reports ---
|
|
OIG_REPORTS = [
|
|
GreyLitEntry(
|
|
title=(
|
|
"Medicare Part B Payment Trends for Skin Substitutes "
|
|
"Raise Major Concerns About Fraud, Waste, and Abuse"
|
|
),
|
|
url="https://oig.hhs.gov/oei/reports/OEI-02-22-00340.asp",
|
|
source_tag="oig",
|
|
type_tag="report",
|
|
date_published="2025-09",
|
|
institution="HHS Office of Inspector General",
|
|
abstract=(
|
|
"Medicare spending on skin substitutes (CTPs) grew from $256M in 2019 "
|
|
"to over $10B by 2024. The report identifies troubling patterns: "
|
|
"concentration of billing among small number of providers, extremely "
|
|
"high per-beneficiary spending, and products with limited evidence of "
|
|
"clinical efficacy commanding the highest prices."
|
|
),
|
|
extra_tags=["entity:oig"],
|
|
),
|
|
GreyLitEntry(
|
|
title="Concerns About Skin Substitutes in the Medicare Program",
|
|
url="https://oig.hhs.gov/documents/special-advisory-bulletins/1078/SAB-Skin-Substitutes.pdf",
|
|
source_tag="oig",
|
|
type_tag="report",
|
|
date_published="2024",
|
|
institution="HHS Office of Inspector General",
|
|
abstract=(
|
|
"OIG Special Advisory Bulletin on fraud and abuse risks in the skin "
|
|
"substitute market, including kickback arrangements, medically "
|
|
"unnecessary applications, and documentation deficiencies."
|
|
),
|
|
),
|
|
GreyLitEntry(
|
|
title=(
|
|
"OIG Semiannual Report to Congress, Fall 2025 — "
|
|
"Skin Substitute Enforcement Summary"
|
|
),
|
|
url="https://oig.hhs.gov/reports-and-publications/semiannual/",
|
|
source_tag="oig",
|
|
type_tag="report",
|
|
date_published="2025-10",
|
|
institution="HHS Office of Inspector General",
|
|
abstract=(
|
|
"Semiannual enforcement report summarizing OIG investigations, "
|
|
"audits, and enforcement actions related to skin substitutes "
|
|
"and wound care fraud during the reporting period."
|
|
),
|
|
extra_tags=["entity:oig"],
|
|
),
|
|
GreyLitEntry(
|
|
title=(
|
|
"Medicare Improperly Paid Millions of Dollars for Skin "
|
|
"Substitute Products and Related Services"
|
|
),
|
|
url="https://oig.hhs.gov/oas/reports/region5/51700028.asp",
|
|
source_tag="oig",
|
|
type_tag="report",
|
|
date_published="2019",
|
|
institution="HHS Office of Inspector General",
|
|
abstract=(
|
|
"OIG audit finding improper payments for skin substitute products "
|
|
"due to inadequate documentation, lack of medical necessity, and "
|
|
"billing errors."
|
|
),
|
|
),
|
|
]
|
|
|
|
# --- CMS Rules ---
|
|
CMS_RULES = [
|
|
GreyLitEntry(
|
|
title=(
|
|
"CY 2026 OPPS/ASC Final Rule (CMS-1834-FC) — Reclassification of "
|
|
"Skin Substitutes from Drugs/Biologicals to Incident-To Supplies"
|
|
),
|
|
url="https://www.federalregister.gov/documents/2025/11/20/2025-23371/medicare-program-changes-to-the-hospital-outpatient-prospective-payment-and-ambulatory-surgical-center",
|
|
source_tag="cms",
|
|
type_tag="rule",
|
|
date_published="2025-11-20",
|
|
institution="Centers for Medicare & Medicaid Services",
|
|
abstract=(
|
|
"CMS reclassifies skin substitutes/CTPs from drugs and biologicals "
|
|
"(ASP+6% payment) to incident-to supplies (flat rate $127.28/cm²). "
|
|
"Creates new HCPCS C5271-C5278 codes replacing Q4xxx series. "
|
|
"Estimated $9.4B savings over 10 years."
|
|
),
|
|
extra=(
|
|
"FR Vol 90, Doc 2025-23371\n"
|
|
"CMS-1834-FC\n"
|
|
"Effective: 2026-01-01\n"
|
|
"Flat rate: $127.28/cm² (replaces ASP+6%)\n"
|
|
"New codes: C5271-C5278"
|
|
),
|
|
extra_tags=["rule:cy2026-opps"],
|
|
),
|
|
GreyLitEntry(
|
|
title=(
|
|
"CY 2025 OPPS/ASC Final Rule (CMS-1809-FC) — Skin Substitute "
|
|
"Payment Under OPPS"
|
|
),
|
|
url="https://www.federalregister.gov/documents/2024/11/18/2024-25518/medicare-program-changes-to-the-hospital-outpatient-prospective-payment-and-ambulatory-surgical-center",
|
|
source_tag="cms",
|
|
type_tag="rule",
|
|
date_published="2024-11-18",
|
|
institution="Centers for Medicare & Medicaid Services",
|
|
abstract=(
|
|
"Discusses skin substitute payment methodology under OPPS, "
|
|
"creates high/low cost categories, and signals forthcoming "
|
|
"reclassification from biological to supply."
|
|
),
|
|
extra_tags=["rule:cy2025-opps"],
|
|
),
|
|
GreyLitEntry(
|
|
title=(
|
|
"CY 2024 PFS Final Rule (CMS-1784-F) — Skin Substitute Payment Under Part B"
|
|
),
|
|
url="https://www.federalregister.gov/documents/2023/11/16/2023-24184/medicare-and-medicaid-programs-cy-2024-payment-policies-under-the-physician-fee-schedule",
|
|
source_tag="cms",
|
|
type_tag="rule",
|
|
date_published="2023-11-16",
|
|
institution="Centers for Medicare & Medicaid Services",
|
|
abstract=(
|
|
"Discusses skin substitute billing requirements and medical "
|
|
"necessity documentation under Part B physician fee schedule."
|
|
),
|
|
extra_tags=["rule:cy2024-pfs"],
|
|
),
|
|
GreyLitEntry(
|
|
title=(
|
|
"CY 2023 OPPS Final Rule (CMS-1772-FC) — First Codification of "
|
|
"High/Low Cost Skin Substitute Categories"
|
|
),
|
|
url="https://www.federalregister.gov/documents/2022/11/23/2022-23918/medicare-program-changes-to-the-hospital-outpatient-prospective-payment-and-ambulatory-surgical-center",
|
|
source_tag="cms",
|
|
type_tag="rule",
|
|
date_published="2022-11-23",
|
|
institution="Centers for Medicare & Medicaid Services",
|
|
abstract=(
|
|
"First rule to formally codify high-cost and low-cost skin "
|
|
"substitute categories under OPPS, establishing the two-tier "
|
|
"payment framework that persisted through CY 2025."
|
|
),
|
|
extra_tags=["rule:cy2023-opps"],
|
|
),
|
|
GreyLitEntry(
|
|
title=(
|
|
"CY 2022 OPPS Final Rule (CMS-1753-FC) — Skin Substitute "
|
|
"Pass-Through Payment Discussion"
|
|
),
|
|
url="https://www.federalregister.gov/documents/2021/11/16/2021-24011/medicare-program-changes-to-the-hospital-outpatient-prospective-payment-and-ambulatory-surgical-center",
|
|
source_tag="cms",
|
|
type_tag="rule",
|
|
date_published="2021-11-16",
|
|
institution="Centers for Medicare & Medicaid Services",
|
|
abstract=(
|
|
"Discusses pass-through payment status for skin substitute "
|
|
"products under OPPS, including criteria for transitional "
|
|
"pass-through eligibility and cost reporting requirements."
|
|
),
|
|
extra_tags=["rule:cy2022-opps"],
|
|
),
|
|
GreyLitEntry(
|
|
title=(
|
|
"CY 2021 PFS Final Rule (CMS-1734-F) — Skin Substitute "
|
|
"Billing Under Physician Fee Schedule"
|
|
),
|
|
url="https://www.federalregister.gov/documents/2020/12/28/2020-26815/medicare-program-cy-2021-payment-policies-under-the-physician-fee-schedule",
|
|
source_tag="cms",
|
|
type_tag="rule",
|
|
date_published="2020-12-28",
|
|
institution="Centers for Medicare & Medicaid Services",
|
|
abstract=(
|
|
"Establishes skin substitute billing requirements and payment "
|
|
"rates under the Part B physician fee schedule, including "
|
|
"application code valuation and medical necessity criteria."
|
|
),
|
|
extra_tags=["rule:cy2021-pfs"],
|
|
),
|
|
GreyLitEntry(
|
|
title=(
|
|
"CY 2014 OPPS Final Rule (CMS-1601-FC) — First Major Skin "
|
|
"Substitute Payment Restructuring"
|
|
),
|
|
url="https://www.federalregister.gov/documents/2013/12/10/2013-28737/medicare-program-changes-to-the-hospital-outpatient-prospective-payment-and-ambulatory-surgical-center",
|
|
source_tag="cms",
|
|
type_tag="rule",
|
|
date_published="2013-12-10",
|
|
institution="Centers for Medicare & Medicaid Services",
|
|
abstract=(
|
|
"First major restructuring of skin substitute payment under "
|
|
"OPPS, moving from individual product-level pass-through to "
|
|
"grouped payment categories based on cost and clinical use."
|
|
),
|
|
extra_tags=["rule:cy2014-opps"],
|
|
),
|
|
GreyLitEntry(
|
|
title="Medicare Benefit Policy Manual, Ch.15 §270 — Biological Products",
|
|
url="https://www.cms.gov/regulations-and-guidance/guidance/manuals/downloads/bp102c15.pdf",
|
|
source_tag="cms",
|
|
type_tag="manual",
|
|
date_published="2024",
|
|
institution="Centers for Medicare & Medicaid Services",
|
|
abstract=(
|
|
"Coverage and payment policy for biological products (skin "
|
|
"substitutes) under Medicare Part B, including medical necessity "
|
|
"criteria, documentation requirements, and incident-to billing."
|
|
),
|
|
),
|
|
]
|
|
|
|
# --- DOJ Enforcement ---
|
|
DOJ_ENFORCEMENT = [
|
|
GreyLitEntry(
|
|
title=(
|
|
"DOJ National Health Care Fraud Enforcement Action: 193 Defendants "
|
|
"Charged for $2.75 Billion in Fraud"
|
|
),
|
|
url="https://www.justice.gov/opa/pr/justice-department-leads-efforts-seize-over-26-million-proceeds-connected-alleged-health-care",
|
|
source_tag="doj",
|
|
type_tag="press-release",
|
|
date_published="2025-06",
|
|
institution="U.S. Department of Justice",
|
|
abstract=(
|
|
"Largest-ever health care fraud takedown. Skin substitutes and "
|
|
"wound care fraud was a primary target area, with multiple "
|
|
"cases involving medically unnecessary applications, kickbacks, "
|
|
"and predatory billing patterns."
|
|
),
|
|
extra_tags=["entity:doj"],
|
|
),
|
|
GreyLitEntry(
|
|
title=(
|
|
"USA v. Patrick Jenson et al. (S.D. Tex. 4:25-cr-00271) — "
|
|
"$90M Skin Substitute Fraud"
|
|
),
|
|
url="https://www.justice.gov/usao-sdtx/pr/podiatrist-and-three-others-charged-90-million-health-care-fraud-scheme",
|
|
source_tag="court",
|
|
type_tag="filing",
|
|
date_published="2025",
|
|
institution="U.S. District Court, S.D. Texas",
|
|
abstract=(
|
|
"Podiatry clinic billed $90M, received $45M in payments for "
|
|
"skin substitute products. Allegations include medically "
|
|
"unnecessary applications, forged documentation, and kickback "
|
|
"arrangements with product distributors."
|
|
),
|
|
extra="Case: 4:25-cr-00271\nDistrict: S.D. Tex.",
|
|
extra_tags=["case:jenson", "entity:sdtx"],
|
|
),
|
|
GreyLitEntry(
|
|
title=(
|
|
"USA v. Gehrke & King (D. Ariz.) — $1.2B Mobile Wound Care Fraud Scheme"
|
|
),
|
|
url="https://www.justice.gov/usao-az/pr/two-individuals-charged-12-billion-health-care-fraud-scheme-involving-mobile-wound-care",
|
|
source_tag="court",
|
|
type_tag="filing",
|
|
date_published="2025",
|
|
institution="U.S. District Court, D. Arizona",
|
|
abstract=(
|
|
"Mobile wound care company billed $1.2B for skin substitute "
|
|
"products. Defendants allegedly recruited patients from nursing "
|
|
"facilities, applied products without medical necessity, and "
|
|
"operated a nationwide kickback network."
|
|
),
|
|
extra="District: D. Ariz.",
|
|
extra_tags=["case:gehrke-king", "entity:daz"],
|
|
),
|
|
GreyLitEntry(
|
|
title=("USA v. Azar Nasser (E.D. Mich.) — $60M Skin Substitute Fraud Ring"),
|
|
url="https://www.justice.gov/usao-edmi/pr/metro-detroit-physician-charged-60-million-health-care-fraud-scheme",
|
|
source_tag="court",
|
|
type_tag="filing",
|
|
date_published="2025",
|
|
institution="U.S. District Court, E.D. Michigan",
|
|
abstract=(
|
|
"Metro Detroit physician charged in $60M skin substitute fraud "
|
|
"scheme involving medically unnecessary applications and "
|
|
"kickback payments to referring providers."
|
|
),
|
|
extra_tags=["case:nasser", "entity:edmi"],
|
|
),
|
|
GreyLitEntry(
|
|
title=(
|
|
"USA v. Patel et al. (M.D. Fla.) — $250M Skin Substitute "
|
|
"and Genetic Testing Fraud"
|
|
),
|
|
url="https://www.justice.gov/usao-mdfl/pr/florida-pain-management-doctor-and-others-charged-250-million-health-care-fraud",
|
|
source_tag="court",
|
|
type_tag="filing",
|
|
date_published="2025",
|
|
institution="U.S. District Court, M.D. Florida",
|
|
abstract=(
|
|
"Florida pain management doctor and co-conspirators charged in "
|
|
"$250M fraud scheme combining skin substitute and genetic testing "
|
|
"billing with kickbacks and patient recruitment."
|
|
),
|
|
extra_tags=["case:patel", "entity:mdfl"],
|
|
),
|
|
GreyLitEntry(
|
|
title="Vohra Wound Physicians (S.D. Fla.) — $45M FCA Settlement",
|
|
url="https://www.justice.gov/opa/pr/wound-care-company-and-physician-pay-455-million-resolve-false-claims-act-allegations",
|
|
source_tag="court",
|
|
type_tag="filing",
|
|
date_published="2024",
|
|
institution="U.S. District Court, S.D. Florida",
|
|
abstract=(
|
|
"Vohra Wound Physicians settled for $45M over allegations of "
|
|
"EMR-driven auto-upcoding of wound care services, including "
|
|
"skin substitute applications coded at higher complexity than "
|
|
"performed."
|
|
),
|
|
extra="District: S.D. Fla.\nSettlement: $45.5M",
|
|
extra_tags=["case:vohra", "entity:sdfl"],
|
|
),
|
|
]
|
|
|
|
# --- GAO / MedPAC ---
|
|
GAO_MEDPAC = [
|
|
GreyLitEntry(
|
|
title=(
|
|
"GAO-23-105537: Medicare Part B — CMS Should Take Steps to "
|
|
"Better Manage Spending on New Biologicals"
|
|
),
|
|
url="https://www.gao.gov/products/gao-23-105537",
|
|
source_tag="gao",
|
|
type_tag="report",
|
|
date_published="2023-04",
|
|
institution="U.S. Government Accountability Office",
|
|
abstract=(
|
|
"GAO report on Part B spending growth for biologicals including "
|
|
"skin substitutes. Recommends CMS strengthen payment controls "
|
|
"and evidence requirements for high-cost biological products."
|
|
),
|
|
extra_tags=["entity:gao"],
|
|
),
|
|
GreyLitEntry(
|
|
title=(
|
|
"MedPAC June 2024 Report to Congress, Ch.3: Medicare Part B "
|
|
"Drug and Biological Spending"
|
|
),
|
|
url="https://www.medpac.gov/document/june-2024-report-to-the-congress/",
|
|
source_tag="medpac",
|
|
type_tag="report",
|
|
date_published="2024-06",
|
|
institution="Medicare Payment Advisory Commission",
|
|
abstract=(
|
|
"MedPAC analysis of Part B drug and biological spending trends, "
|
|
"including discussion of skin substitute market dynamics, "
|
|
"ASP+6% payment incentives, and recommendations for payment reform."
|
|
),
|
|
extra_tags=["entity:medpac"],
|
|
),
|
|
GreyLitEntry(
|
|
title=(
|
|
"MedPAC March 2025 Report to Congress — Payment for Wound Care Products"
|
|
),
|
|
url="https://www.medpac.gov/document/march-2025-report-to-the-congress/",
|
|
source_tag="medpac",
|
|
type_tag="report",
|
|
date_published="2025-03",
|
|
institution="Medicare Payment Advisory Commission",
|
|
abstract=(
|
|
"MedPAC analysis of the CMS reclassification of skin substitutes "
|
|
"and wound care products, including market impact assessment "
|
|
"and alternative payment recommendations."
|
|
),
|
|
extra_tags=["entity:medpac"],
|
|
),
|
|
]
|
|
|
|
# --- MAC LCDs ---
|
|
MAC_LCDS = [
|
|
GreyLitEntry(
|
|
title="Noridian LCD L39831 — Skin Substitutes and Wound Care",
|
|
url="https://www.cms.gov/medicare-coverage-database/view/lcd.aspx?lcdid=39831",
|
|
source_tag="mac-lcd",
|
|
type_tag="lcd",
|
|
date_published="2024",
|
|
institution="Noridian Healthcare Solutions (MAC JE/JF)",
|
|
abstract=(
|
|
"Local Coverage Determination for skin substitute products "
|
|
"including coverage criteria, documentation requirements, "
|
|
"and coding guidance for Medicare claims."
|
|
),
|
|
extra_tags=["entity:noridian"],
|
|
),
|
|
GreyLitEntry(
|
|
title="CGS LCD L38916 — Application of Skin Substitute Grafts",
|
|
url="https://www.cms.gov/medicare-coverage-database/view/lcd.aspx?lcdid=38916",
|
|
source_tag="mac-lcd",
|
|
type_tag="lcd",
|
|
date_published="2024",
|
|
institution="CGS Administrators (MAC J15)",
|
|
abstract=(
|
|
"Coverage determination for skin substitute graft application "
|
|
"codes (15271-15278), including medical necessity criteria "
|
|
"and frequency limitations."
|
|
),
|
|
extra_tags=["entity:cgs"],
|
|
),
|
|
GreyLitEntry(
|
|
title="First Coast LCD L36498 — Wound Care (Skin Substitutes)",
|
|
url="https://www.cms.gov/medicare-coverage-database/view/lcd.aspx?lcdid=36498",
|
|
source_tag="mac-lcd",
|
|
type_tag="lcd",
|
|
date_published="2023",
|
|
institution="First Coast Service Options (MAC JN)",
|
|
abstract=(
|
|
"LCD covering wound care services including skin substitute "
|
|
"application, debridement, and negative pressure wound therapy. "
|
|
"Defines covered diagnoses and documentation requirements."
|
|
),
|
|
extra_tags=["entity:first-coast"],
|
|
),
|
|
GreyLitEntry(
|
|
title="Palmetto LCD L35041 — Wound Care",
|
|
url="https://www.cms.gov/medicare-coverage-database/view/lcd.aspx?lcdid=35041",
|
|
source_tag="mac-lcd",
|
|
type_tag="lcd",
|
|
date_published="2023",
|
|
institution="Palmetto GBA (MAC JJ/JM)",
|
|
abstract=(
|
|
"Coverage criteria for wound care including skin substitute "
|
|
"products, with specific documentation and medical necessity "
|
|
"requirements for the southern US jurisdictions."
|
|
),
|
|
extra_tags=["entity:palmetto"],
|
|
),
|
|
GreyLitEntry(
|
|
title="WPS LCD L38890 — Wound Care and Skin Substitutes",
|
|
url="https://www.cms.gov/medicare-coverage-database/view/lcd.aspx?lcdid=38890",
|
|
source_tag="mac-lcd",
|
|
type_tag="lcd",
|
|
date_published="2024",
|
|
institution="Wisconsin Physicians Service (MAC J5/J8)",
|
|
abstract=(
|
|
"Coverage determination for wound care and skin substitute "
|
|
"products in JC/J8 jurisdictions (Iowa, Kansas, Missouri, "
|
|
"Nebraska), including medical necessity and frequency limits."
|
|
),
|
|
extra_tags=["entity:wps"],
|
|
),
|
|
GreyLitEntry(
|
|
title="Novitas LCD L37300 — Application of Skin Substitute Grafts",
|
|
url="https://www.cms.gov/medicare-coverage-database/view/lcd.aspx?lcdid=37300",
|
|
source_tag="mac-lcd",
|
|
type_tag="lcd",
|
|
date_published="2023",
|
|
institution="Novitas Solutions (MAC JH/JL)",
|
|
abstract=(
|
|
"LCD for skin substitute graft application in JH/JL "
|
|
"jurisdictions (AR, CO, NM, OK, TX, LA, MS), defining "
|
|
"coverage criteria and documentation requirements."
|
|
),
|
|
extra_tags=["entity:novitas"],
|
|
),
|
|
GreyLitEntry(
|
|
title="NGS LCD L36031 — Wound Care",
|
|
url="https://www.cms.gov/medicare-coverage-database/view/lcd.aspx?lcdid=36031",
|
|
source_tag="mac-lcd",
|
|
type_tag="lcd",
|
|
date_published="2023",
|
|
institution="National Government Services (MAC J6/JK)",
|
|
abstract=(
|
|
"Wound care LCD covering J6/JK jurisdictions (CT, IL, ME, "
|
|
"MA, MN, NH, NY, RI, VT, WI), including skin substitute "
|
|
"coverage criteria and coding guidance."
|
|
),
|
|
extra_tags=["entity:ngs"],
|
|
),
|
|
]
|
|
|
|
# --- Industry / Professional Societies ---
|
|
INDUSTRY = [
|
|
GreyLitEntry(
|
|
title=(
|
|
"Alliance of Wound Care Stakeholders — Position Statement on "
|
|
"CMS Reclassification of Skin Substitutes"
|
|
),
|
|
url="https://www.woundcarestakeholders.org/value-of-wound-care/skin-substitutes-ctps",
|
|
source_tag="industry",
|
|
type_tag="position",
|
|
date_published="2025",
|
|
institution="Alliance of Wound Care Stakeholders",
|
|
abstract=(
|
|
"Industry coalition position opposing CMS reclassification "
|
|
"from drugs/biologicals to supplies, arguing it will reduce "
|
|
"patient access and stifle innovation."
|
|
),
|
|
),
|
|
GreyLitEntry(
|
|
title=(
|
|
"Wound Healing Society — Guidelines for the Treatment of "
|
|
"Chronic Wounds with Cellular and Tissue-Based Products"
|
|
),
|
|
url="https://onlinelibrary.wiley.com/doi/10.1111/wrr.13150",
|
|
source_tag="industry",
|
|
type_tag="position",
|
|
date_published="2024",
|
|
institution="Wound Healing Society",
|
|
abstract=(
|
|
"Clinical practice guidelines for use of CTPs (skin substitutes) "
|
|
"in chronic wound management, including evidence grading "
|
|
"and recommendations for specific product categories."
|
|
),
|
|
),
|
|
]
|
|
|
|
|
|
ALL_ENTRIES = (
|
|
OIG_REPORTS + CMS_RULES + DOJ_ENFORCEMENT + GAO_MEDPAC + MAC_LCDS + INDUSTRY
|
|
)
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Store integration
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
|
def entry_to_item(entry: GreyLitEntry) -> Source:
|
|
"""Convert a GreyLitEntry to a bib Source item."""
|
|
tags = [
|
|
"module:skin-subs",
|
|
f"source:{entry.source_tag}",
|
|
f"type:{entry.type_tag}",
|
|
]
|
|
if entry.date_published:
|
|
year = entry.date_published[:4]
|
|
tags.append(f"year:{year}")
|
|
tags.extend(entry.extra_tags)
|
|
|
|
return Source(
|
|
title=entry.title,
|
|
url=entry.url,
|
|
date_published=entry.date_published,
|
|
institution=entry.institution,
|
|
abstract=entry.abstract,
|
|
doc_type=entry.type_tag,
|
|
tags=tags,
|
|
extra=entry.extra,
|
|
)
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Main
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser(description="Grey literature collection")
|
|
parser.add_argument(
|
|
"--dry-run",
|
|
action="store_true",
|
|
help="Print catalogue only, don't write to bib.sqlite",
|
|
)
|
|
args = parser.parse_args()
|
|
|
|
print("=" * 70)
|
|
print("Grey Literature Collection: Skin Substitutes")
|
|
print(f"Date: {datetime.now().strftime('%Y-%m-%d %H:%M')}")
|
|
print("=" * 70)
|
|
|
|
# Catalogue summary
|
|
by_source: dict[str, int] = {}
|
|
for entry in ALL_ENTRIES:
|
|
by_source[entry.source_tag] = by_source.get(entry.source_tag, 0) + 1
|
|
|
|
print(f"\nTotal documents: {len(ALL_ENTRIES)}")
|
|
print("By source:")
|
|
for src, count in sorted(by_source.items()):
|
|
print(f" {src:15s}: {count:>3}")
|
|
|
|
print("\nDocuments:")
|
|
for i, entry in enumerate(ALL_ENTRIES, 1):
|
|
print(f" {i:2d}. [{entry.source_tag}] {entry.title[:70]}")
|
|
|
|
if args.dry_run:
|
|
print("\n[DRY RUN] Skipping bib.sqlite write")
|
|
return
|
|
|
|
# Store in bib.sqlite
|
|
print(f"\nStoring {len(ALL_ENTRIES)} documents in bib.sqlite ...")
|
|
store = Store()
|
|
|
|
created = 0
|
|
updated = 0
|
|
for entry in ALL_ENTRIES:
|
|
item = entry_to_item(entry)
|
|
con = store._con()
|
|
existing = con.execute(
|
|
"SELECT key FROM items WHERE url = ?", (item.url,)
|
|
).fetchone()
|
|
if existing:
|
|
updated += 1
|
|
else:
|
|
created += 1
|
|
store.upsert(item)
|
|
|
|
print(f" Created: {created}")
|
|
print(f" Updated: {updated}")
|
|
|
|
# Verify total skin-subs grey lit
|
|
con = store._con()
|
|
total = con.execute(
|
|
"""SELECT count(DISTINCT i.id) FROM items i
|
|
JOIN item_tags it ON i.id = it.item_id
|
|
JOIN tags t ON it.tag_id = t.id
|
|
WHERE t.name = 'module:skin-subs'
|
|
AND i.item_type = 'source'
|
|
AND i.url NOT LIKE '%pubmed%'"""
|
|
).fetchone()[0]
|
|
print(f" Total skin-subs grey lit in bib.sqlite: {total}")
|
|
|
|
store.close()
|
|
print("\nDone.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|