{"id":1220,"date":"2026-04-22T22:32:56","date_gmt":"2026-04-22T21:32:56","guid":{"rendered":"https:\/\/microregistrar.com\/?p=1220"},"modified":"2026-04-22T22:47:59","modified_gmt":"2026-04-22T21:47:59","slug":"ams-strategies-dashboard","status":"publish","type":"post","link":"https:\/\/microregistrar.com\/?p=1220","title":{"rendered":"AMS Strategy dashboard"},"content":{"rendered":"\n<p>How many AMS strategies do you know?<\/p>\n\n\n\n<p>Here are > 100 strategies from 17 families. Also, list the nature of your hospital and find out the strategies that best fit your set-up. It is an educational-experimental tool. Always discuss with your AMS expert.<\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>AMS Strategy Atlas \u2014 Interactive Learning Dashboard<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,600;0,9..144,800;1,9..144,400&#038;family=JetBrains+Mono:wght@400;500;700&#038;family=Inter+Tight:wght@300;400;500;600;700&#038;display=swap\" rel=\"stylesheet\">\n<style>\n  :root {\n    --ink: #1a1815;\n    --paper: #f4efe6;\n    --paper-warm: #ede5d3;\n    --accent: #b8441f;\n    --accent-soft: #d96a40;\n    --sage: #6b7d5a;\n    --ochre: #c8932b;\n    --slate: #4a5568;\n    --border: #1a1815;\n    --muted: #6b6456;\n    --evidence-high: #2d5a3d;\n    --evidence-mod: #c8932b;\n    --evidence-low: #b8441f;\n    --evidence-emerging: #6b4a7a;\n  }\n\n  * { box-sizing: border-box; margin: 0; padding: 0; }\n\n  body {\n    font-family: 'Inter Tight', sans-serif;\n    background: var(--paper);\n    color: var(--ink);\n    line-height: 1.55;\n    min-height: 100vh;\n    background-image:\n      radial-gradient(circle at 10% 20%, rgba(184,68,31,0.03) 0%, transparent 50%),\n      radial-gradient(circle at 90% 80%, rgba(107,125,90,0.04) 0%, transparent 50%);\n  }\n\n  header.masthead {\n    border-bottom: 2px solid var(--ink);\n    padding: 32px 48px 24px;\n    background: var(--paper-warm);\n    position: relative;\n  }\n\n  .masthead-top {\n    display: flex;\n    justify-content: space-between;\n    align-items: baseline;\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 11px;\n    text-transform: uppercase;\n    letter-spacing: 2px;\n    color: var(--muted);\n    margin-bottom: 16px;\n  }\n\n  .masthead-top .pill {\n    padding: 3px 10px;\n    border: 1px solid var(--ink);\n    border-radius: 2px;\n    background: var(--ink);\n    color: var(--paper);\n  }\n\n  h1.title {\n    font-family: 'Fraunces', serif;\n    font-size: clamp(38px, 5vw, 62px);\n    font-weight: 800;\n    line-height: 0.95;\n    letter-spacing: -0.02em;\n    margin-bottom: 12px;\n  }\n  h1.title .italic { font-style: italic; font-weight: 400; color: var(--accent); }\n\n  .subtitle {\n    font-family: 'Fraunces', serif;\n    font-style: italic;\n    font-size: 18px;\n    color: var(--slate);\n    max-width: 720px;\n    margin-bottom: 20px;\n  }\n\n  .nav-tabs {\n    display: flex;\n    gap: 0;\n    border-top: 1px solid var(--ink);\n    padding-top: 16px;\n  }\n  .nav-tab {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 12px;\n    text-transform: uppercase;\n    letter-spacing: 1.5px;\n    padding: 10px 20px;\n    border: 1px solid var(--ink);\n    border-right: none;\n    background: transparent;\n    cursor: pointer;\n    transition: all 0.2s;\n    color: var(--ink);\n  }\n  .nav-tab:last-child { border-right: 1px solid var(--ink); }\n  .nav-tab:hover { background: var(--paper); }\n  .nav-tab.active { background: var(--ink); color: var(--paper); }\n\n  main { padding: 40px 48px 80px; max-width: 1600px; margin: 0 auto; }\n\n  \/* ===== ATLAS VIEW ===== *\/\n  .atlas-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: flex-end;\n    margin-bottom: 32px;\n    flex-wrap: wrap;\n    gap: 16px;\n  }\n  .atlas-intro { max-width: 640px; }\n  .atlas-intro h2 {\n    font-family: 'Fraunces', serif;\n    font-size: 28px;\n    font-weight: 600;\n    margin-bottom: 6px;\n  }\n  .atlas-intro p { font-size: 14px; color: var(--slate); }\n\n  .filter-bar {\n    display: flex;\n    gap: 8px;\n    align-items: center;\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 11px;\n    text-transform: uppercase;\n  }\n  .filter-chip {\n    padding: 6px 12px;\n    border: 1px solid var(--ink);\n    background: var(--paper);\n    cursor: pointer;\n    letter-spacing: 1px;\n    transition: all 0.15s;\n  }\n  .filter-chip:hover { background: var(--paper-warm); }\n  .filter-chip.active { background: var(--ink); color: var(--paper); }\n\n  .search-box {\n    padding: 8px 14px;\n    border: 1px solid var(--ink);\n    background: var(--paper);\n    font-family: 'Inter Tight', sans-serif;\n    font-size: 13px;\n    width: 240px;\n  }\n\n  .family-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n    gap: 0;\n    border: 1px solid var(--ink);\n  }\n\n  .family-card {\n    padding: 24px 22px;\n    border-right: 1px solid var(--ink);\n    border-bottom: 1px solid var(--ink);\n    background: var(--paper);\n    cursor: pointer;\n    transition: background 0.2s;\n    position: relative;\n    min-height: 180px;\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n  }\n  .family-card:hover { background: var(--paper-warm); }\n\n  .family-letter {\n    font-family: 'Fraunces', serif;\n    font-weight: 800;\n    font-size: 56px;\n    line-height: 1;\n    color: var(--accent);\n    position: absolute;\n    top: 14px;\n    right: 18px;\n    opacity: 0.9;\n  }\n  .family-card:hover .family-letter { color: var(--ink); }\n\n  .family-tag {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10px;\n    text-transform: uppercase;\n    letter-spacing: 2px;\n    color: var(--muted);\n    margin-bottom: 8px;\n  }\n  .family-name {\n    font-family: 'Fraunces', serif;\n    font-size: 22px;\n    font-weight: 600;\n    line-height: 1.15;\n    margin-bottom: 10px;\n    padding-right: 50px;\n  }\n  .family-meta {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 11px;\n    color: var(--slate);\n    text-transform: uppercase;\n    letter-spacing: 1px;\n  }\n  .family-meta .count { color: var(--accent); font-weight: 700; }\n\n  \/* ===== SUBTOPIC VIEW ===== *\/\n  .subtopic-view { display: none; }\n  .subtopic-view.active { display: block; }\n\n  .breadcrumb {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 11px;\n    text-transform: uppercase;\n    letter-spacing: 2px;\n    color: var(--muted);\n    margin-bottom: 16px;\n    cursor: pointer;\n  }\n  .breadcrumb:hover { color: var(--accent); }\n  .breadcrumb::before { content: \"\u2190 \"; }\n\n  .family-header {\n    border-bottom: 2px solid var(--ink);\n    padding-bottom: 24px;\n    margin-bottom: 28px;\n  }\n  .family-header h2 {\n    font-family: 'Fraunces', serif;\n    font-size: 44px;\n    font-weight: 700;\n    letter-spacing: -0.02em;\n    margin-bottom: 8px;\n  }\n  .family-header h2 .letter {\n    color: var(--accent);\n    font-weight: 800;\n    margin-right: 12px;\n  }\n  .family-header .description {\n    font-family: 'Fraunces', serif;\n    font-style: italic;\n    font-size: 17px;\n    color: var(--slate);\n    max-width: 780px;\n  }\n\n  .strategy-list {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));\n    gap: 14px;\n  }\n  .strategy-card {\n    padding: 18px 20px;\n    border: 1px solid var(--ink);\n    background: var(--paper);\n    cursor: pointer;\n    transition: all 0.15s;\n    position: relative;\n  }\n  .strategy-card:hover {\n    background: var(--ink);\n    color: var(--paper);\n  }\n  .strategy-card:hover .strategy-tag { color: var(--paper); opacity: 0.6; }\n  .strategy-card:hover .evidence-dot { border-color: var(--paper); }\n\n  .strategy-tag {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10px;\n    text-transform: uppercase;\n    letter-spacing: 1.5px;\n    color: var(--muted);\n    margin-bottom: 6px;\n  }\n  .strategy-name {\n    font-family: 'Fraunces', serif;\n    font-size: 19px;\n    font-weight: 600;\n    line-height: 1.2;\n    margin-bottom: 10px;\n  }\n  .strategy-footer {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10px;\n    text-transform: uppercase;\n    letter-spacing: 1px;\n  }\n  .evidence-dot {\n    display: inline-block;\n    width: 10px;\n    height: 10px;\n    border-radius: 50%;\n    margin-right: 6px;\n    vertical-align: middle;\n    border: 1px solid transparent;\n  }\n  .evidence-high { background: var(--evidence-high); }\n  .evidence-mod { background: var(--evidence-mod); }\n  .evidence-low { background: var(--evidence-low); }\n  .evidence-emerging { background: var(--evidence-emerging); }\n\n  \/* ===== DETAIL MODAL ===== *\/\n  .modal-backdrop {\n    display: none;\n    position: fixed;\n    inset: 0;\n    background: rgba(26,24,21,0.7);\n    z-index: 100;\n    backdrop-filter: blur(4px);\n  }\n  .modal-backdrop.active { display: flex; align-items: flex-start; justify-content: center; padding: 40px 20px; overflow-y: auto; }\n\n  .modal {\n    background: var(--paper);\n    border: 2px solid var(--ink);\n    max-width: 820px;\n    width: 100%;\n    position: relative;\n    box-shadow: 12px 12px 0 var(--ink);\n  }\n  .modal-close {\n    position: absolute;\n    top: 12px;\n    right: 14px;\n    background: none;\n    border: none;\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 11px;\n    text-transform: uppercase;\n    letter-spacing: 2px;\n    cursor: pointer;\n    color: var(--ink);\n    padding: 4px 10px;\n    border: 1px solid var(--ink);\n  }\n  .modal-close:hover { background: var(--ink); color: var(--paper); }\n\n  .modal-header {\n    padding: 30px 36px 20px;\n    border-bottom: 1px solid var(--ink);\n    background: var(--paper-warm);\n  }\n  .modal-tag {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10px;\n    text-transform: uppercase;\n    letter-spacing: 2px;\n    color: var(--accent);\n    margin-bottom: 8px;\n  }\n  .modal-title {\n    font-family: 'Fraunces', serif;\n    font-size: 32px;\n    font-weight: 700;\n    line-height: 1.1;\n    margin-bottom: 10px;\n    padding-right: 80px;\n  }\n  .modal-oneliner {\n    font-family: 'Fraunces', serif;\n    font-style: italic;\n    font-size: 15px;\n    color: var(--slate);\n  }\n\n  .modal-body { padding: 28px 36px 32px; }\n\n  .section-block { margin-bottom: 24px; }\n  .section-label {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10px;\n    text-transform: uppercase;\n    letter-spacing: 2.5px;\n    color: var(--accent);\n    margin-bottom: 8px;\n    padding-bottom: 4px;\n    border-bottom: 1px solid var(--ink);\n  }\n  .section-content { font-size: 14.5px; line-height: 1.6; }\n  .section-content p { margin-bottom: 8px; }\n\n  .evidence-badge {\n    display: inline-flex;\n    align-items: center;\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 11px;\n    font-weight: 500;\n    text-transform: uppercase;\n    letter-spacing: 1.5px;\n    padding: 4px 10px;\n    border: 1px solid var(--ink);\n    background: var(--paper);\n  }\n  .evidence-badge.high { background: var(--evidence-high); color: var(--paper); border-color: var(--evidence-high); }\n  .evidence-badge.mod { background: var(--evidence-mod); color: var(--ink); border-color: var(--evidence-mod); }\n  .evidence-badge.low { background: var(--evidence-low); color: var(--paper); border-color: var(--evidence-low); }\n  .evidence-badge.emerging { background: var(--evidence-emerging); color: var(--paper); border-color: var(--evidence-emerging); }\n\n  .source-list { list-style: none; }\n  .source-list li {\n    padding: 4px 0 4px 18px;\n    font-size: 13px;\n    position: relative;\n  }\n  .source-list li::before {\n    content: \"\u00a7\";\n    position: absolute;\n    left: 0;\n    color: var(--accent);\n    font-family: 'Fraunces', serif;\n    font-weight: 700;\n  }\n\n  .settings-row {\n    display: flex;\n    gap: 6px;\n    flex-wrap: wrap;\n  }\n  .setting-pill {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10px;\n    text-transform: uppercase;\n    letter-spacing: 1px;\n    padding: 3px 9px;\n    background: var(--paper-warm);\n    border: 1px solid var(--ink);\n  }\n\n  \/* ===== HOSPITAL MATCH VIEW ===== *\/\n  .match-view { display: none; }\n  .match-view.active { display: block; }\n\n  .match-intro {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 40px;\n    margin-bottom: 32px;\n  }\n  .match-intro h2 {\n    font-family: 'Fraunces', serif;\n    font-size: 36px;\n    font-weight: 700;\n    line-height: 1.05;\n    margin-bottom: 12px;\n  }\n  .match-intro h2 .italic { font-style: italic; color: var(--accent); }\n  .match-intro p { font-size: 15px; color: var(--slate); line-height: 1.6; }\n\n  .profile-form {\n    border: 1px solid var(--ink);\n    padding: 28px 32px;\n    background: var(--paper-warm);\n  }\n  .form-field { margin-bottom: 20px; }\n  .form-field label {\n    display: block;\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 11px;\n    text-transform: uppercase;\n    letter-spacing: 1.5px;\n    margin-bottom: 8px;\n    color: var(--ink);\n    font-weight: 500;\n  }\n  .form-field label .hint {\n    font-family: 'Inter Tight', sans-serif;\n    text-transform: none;\n    letter-spacing: 0;\n    color: var(--muted);\n    font-weight: 400;\n    margin-left: 6px;\n    font-size: 11px;\n  }\n\n  .option-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n    gap: 6px;\n  }\n  .option-chip {\n    padding: 8px 12px;\n    border: 1px solid var(--ink);\n    background: var(--paper);\n    cursor: pointer;\n    font-family: 'Inter Tight', sans-serif;\n    font-size: 13px;\n    text-align: left;\n    transition: all 0.15s;\n  }\n  .option-chip:hover { background: var(--paper-warm); }\n  .option-chip.selected {\n    background: var(--ink);\n    color: var(--paper);\n  }\n\n  textarea.free-text {\n    width: 100%;\n    padding: 12px 14px;\n    border: 1px solid var(--ink);\n    background: var(--paper);\n    font-family: 'Inter Tight', sans-serif;\n    font-size: 14px;\n    min-height: 90px;\n    resize: vertical;\n    line-height: 1.5;\n  }\n\n  .analyze-btn {\n    margin-top: 8px;\n    padding: 14px 28px;\n    background: var(--accent);\n    color: var(--paper);\n    border: 1px solid var(--ink);\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 12px;\n    text-transform: uppercase;\n    letter-spacing: 2px;\n    font-weight: 600;\n    cursor: pointer;\n    transition: all 0.15s;\n    box-shadow: 4px 4px 0 var(--ink);\n  }\n  .analyze-btn:hover { transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(--ink); }\n  .analyze-btn:active { transform: translate(2px, 2px); box-shadow: 2px 2px 0 var(--ink); }\n\n  .results-section {\n    margin-top: 40px;\n    display: none;\n  }\n  .results-section.active { display: block; }\n\n  .results-header {\n    font-family: 'Fraunces', serif;\n    font-size: 26px;\n    font-weight: 700;\n    margin-bottom: 6px;\n  }\n  .results-sub {\n    font-family: 'Fraunces', serif;\n    font-style: italic;\n    color: var(--slate);\n    margin-bottom: 20px;\n    font-size: 15px;\n  }\n\nottom: 28px; }\n  .grade-header {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 11px;\n    text-transform: uppercase;\n    letter-spacing: 2px;\n    padding: 8px 14px;\n    border-top: 2px solid var(--ink);\n    border-bottom: 1px solid var(--ink);\n    margin-bottom: 12px;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n  }\n  .grade-header.a { background: var(--ink); color: var(--paper); }\n  .grade-header.b { background: var(--paper-warm); }\n  .grade-header.c { background: var(--paper); }\n\n  .grade-count {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10px;\n    opacity: 0.7;\n  }\n\n  .match-card {\n    border: 1px solid var(--ink);\n    padding: 16px 20px;\n    margin-bottom: 8px;\n    background: var(--paper);\n    display: grid;\n    grid-template-columns: 36px 1fr auto;\n    gap: 16px;\n    align-items: center;\n    cursor: pointer;\n    transition: background 0.15s;\n  }\n  .match-card:hover { background: var(--paper-warm); }\n  .match-score {\n    font-family: 'Fraunces', serif;\n    font-weight: 800;\n    font-size: 24px;\n    color: var(--accent);\n    text-align: center;\n  }\n  .match-info { }\n  .match-name {\n    font-family: 'Fraunces', serif;\n    font-size: 17px;\n    font-weight: 600;\n    margin-bottom: 2px;\n  }\n  .match-reason {\n    font-size: 12.5px;\n    color: var(--slate);\n    font-style: italic;\n  }\n  .match-meta {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10px;\n    text-transform: uppercase;\n    letter-spacing: 1px;\n    color: var(--muted);\n    text-align: right;\n  }\n\n  .footer-note {\n    margin-top: 60px;\n    padding-top: 20px;\n    border-top: 1px solid var(--ink);\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10px;\n    text-transform: uppercase;\n    letter-spacing: 1.5px;\n    color: var(--muted);\n    display: flex;\n    justify-content: space-between;\n    flex-wrap: wrap;\n    gap: 10px;\n  }\n\n  \/* ===== LEGEND ===== *\/\n  .legend {\n    display: flex;\n    gap: 18px;\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10px;\n    text-transform: uppercase;\n    letter-spacing: 1px;\n    color: var(--muted);\n    flex-wrap: wrap;\n  }\n  .legend-item { display: flex; align-items: center; gap: 6px; }\n\n  \/* ===== CAVEAT BANNER ===== *\/\n  .caveat-banner {\n    background: var(--accent);\n    color: var(--paper);\n    padding: 10px 48px;\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 11px;\n    text-transform: uppercase;\n    letter-spacing: 1.5px;\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    border-bottom: 1px solid var(--ink);\n  }\n  .caveat-banner::before {\n    content: \"\u26a0\";\n    font-size: 16px;\n    font-family: 'Fraunces', serif;\n  }\n  .caveat-banner strong { font-weight: 700; }\n\n  \/* ===== ATTRIBUTION ===== *\/\n  .attribution {\n    display: flex;\n    gap: 10px;\n    align-items: center;\n  }\n  .attribution .by {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10px;\n    text-transform: uppercase;\n    letter-spacing: 2px;\n    color: var(--muted);\n  }\n  .attribution .author {\n    font-family: 'Fraunces', serif;\n    font-style: italic;\n    font-size: 13px;\n    color: var(--ink);\n  }\n  .attribution .dot {\n    width: 3px;\n    height: 3px;\n    background: var(--accent);\n    border-radius: 50%;\n  }\n  .attribution .platform {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 11px;\n    letter-spacing: 1.5px;\n    color: var(--accent);\n    font-weight: 500;\n  }\n\n  \/* ===== LLM NARRATIVE ===== *\/\n  .narrative-panel {\n    margin-top: 24px;\n    margin-bottom: 32px;\n    padding: 24px 28px;\n    border: 1px solid var(--ink);\n    background: linear-gradient(135deg, var(--paper-warm) 0%, var(--paper) 100%);\n    position: relative;\n  }\n  .narrative-panel::before {\n    content: \"\";\n    position: absolute;\n    top: 0; left: 0;\n    width: 4px;\n    height: 100%;\n    background: var(--accent);\n  }\n  .narrative-header {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10px;\n    text-transform: uppercase;\n    letter-spacing: 2.5px;\n    color: var(--accent);\n    margin-bottom: 12px;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n  }\n  .narrative-header .ai-tag {\n    padding: 3px 8px;\n    border: 1px solid var(--accent);\n    color: var(--accent);\n    font-size: 9px;\n  }\n  .narrative-content {\n    font-family: 'Fraunces', serif;\n    font-size: 15px;\n    line-height: 1.65;\n    color: var(--ink);\n  }\n  .narrative-content p { margin-bottom: 10px; }\n  .narrative-content strong { font-weight: 600; color: var(--accent); }\n  .narrative-loading {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 11px;\n    color: var(--muted);\n    text-transform: uppercase;\n    letter-spacing: 1.5px;\n  }\n  .narrative-loading::after {\n    content: \"\u2026\";\n    animation: dots 1.4s infinite;\n    display: inline-block;\n  }\n  @keyframes dots {\n    0%, 20% { content: \"\"; }\n    40% { content: \".\"; }\n    60% { content: \"..\"; }\n    80%, 100% { content: \"...\"; }\n  }\n  .narrative-error {\n    font-family: 'Inter Tight', sans-serif;\n    font-size: 13px;\n    color: var(--muted);\n    font-style: italic;\n  }\n\n  @media (max-width: 768px) {\n    header.masthead { padding: 20px 20px 16px; }\n    .caveat-banner { padding: 10px 20px; font-size: 10px; letter-spacing: 1px; }\n    main { padding: 24px 20px 60px; }\n    h1.title { font-size: 34px; }\n    .match-intro { grid-template-columns: 1fr; gap: 24px; }\n    .modal { box-shadow: 6px 6px 0 var(--ink); }\n    .modal-header, .modal-body { padding-left: 22px; padding-right: 22px; }\n    .modal-title { font-size: 24px; padding-right: 60px; }\n    .attribution { flex-wrap: wrap; gap: 6px; }\n  }\n<\/style>\n<\/head>\n<body>\n\n<div class=\"caveat-banner\">\n  <span><strong>Educational tool only.<\/strong> All recommendations must be reviewed by a qualified AMS expert before clinical or policy use.<\/span>\n<\/div>\n\n<header class=\"masthead\">\n  <div class=\"masthead-top\">\n    <span>\u00a7 Antimicrobial Stewardship<\/span>\n    <span class=\"pill\">Educational Atlas v1.0<\/span>\n    <div class=\"attribution\">\n      <span class=\"by\">By<\/span>\n      <span class=\"author\">Dr Suryabrata Banerjee<\/span>\n      <span class=\"dot\"><\/span>\n      <span class=\"platform\">microregistrar.com<\/span>\n    <\/div>\n  <\/div>\n  <h1 class=\"title\">The Stewardship <span class=\"italic\">Atlas<\/span><\/h1>\n  <p class=\"subtitle\">A navigable map of named AMS strategies \u2014 from preauthorisation to phage stewardship \u2014 with mechanism, evidence tier, setting, and hospital-fit matching.<\/p>\n\n  <nav class=\"nav-tabs\">\n    <button class=\"nav-tab active\" data-tab=\"atlas\">\u00a7 Atlas<\/button>\n    <button class=\"nav-tab\" data-tab=\"match\">\u00a7 Hospital Match<\/button>\n    <button class=\"nav-tab\" data-tab=\"about\">\u00a7 About<\/button>\n  <\/nav>\n<\/header>\n\n<main>\n\n<!-- =================== ATLAS VIEW =================== -->\n<section id=\"view-atlas\">\n  <div id=\"atlas-home\">\n    <div class=\"atlas-header\">\n      <div class=\"atlas-intro\">\n        <h2>17 strategy families \u00b7 107 named interventions<\/h2>\n        <p>Click a family to see its strategies. Click any strategy for the full qualifying window \u2014 mechanism, evidence level, applicable settings, and potential impact. <strong>Verify against current guidance before any use.<\/strong><\/p>\n      <\/div>\n      <div class=\"filter-bar\">\n        <input type=\"text\" class=\"search-box\" placeholder=\"Search strategies\u2026\" id=\"search-input\">\n      <\/div>\n    <\/div>\n\n    <div class=\"legend\" style=\"margin-bottom:18px;\">\n      <span class=\"legend-item\"><span class=\"evidence-dot evidence-high\"><\/span>High evidence<\/span>\n      <span class=\"legend-item\"><span class=\"evidence-dot evidence-mod\"><\/span>Moderate evidence<\/span>\n      <span class=\"legend-item\"><span class=\"evidence-dot evidence-low\"><\/span>Limited \/ setting-specific<\/span>\n      <span class=\"legend-item\"><span class=\"evidence-dot evidence-emerging\"><\/span>Emerging \/ pre-adoption<\/span>\n    <\/div>\n\n    <div class=\"family-grid\" id=\"family-grid\"><\/div>\n  <\/div>\n\n  <div class=\"subtopic-view\" id=\"subtopic-view\">\n    <div class=\"breadcrumb\" id=\"crumb-back\">Back to atlas<\/div>\n    <div class=\"family-header\">\n      <h2><span class=\"letter\" id=\"family-letter\"><\/span><span id=\"family-name\"><\/span><\/h2>\n      <p class=\"description\" id=\"family-desc\"><\/p>\n    <\/div>\n    <div class=\"strategy-list\" id=\"strategy-list\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- =================== MATCH VIEW =================== -->\n<section id=\"view-match\" class=\"match-view\">\n  <div class=\"match-intro\">\n    <div>\n      <h2>Describe your <span class=\"italic\">hospital<\/span>.<br>Get a ranked stewardship playbook.<\/h2>\n      <p>Select the characteristics that match your setting. A transparent rule-based engine scores each of the 100+ strategies against your profile and returns them graded by fit \u2014 A (priority), B (high value), C (consider). An AI-generated narrative then contextualises the top-ranked strategies for your specific setting.<\/p>\n      <p style=\"margin-top:12px; font-size:13px;\"><em>Hybrid approach: rule-based triage (transparent, auditable) with AI narrative on top. All outputs require AMS expert review before use.<\/em><\/p>\n    <\/div>\n\n    <div class=\"profile-form\">\n      <div class=\"form-field\">\n        <label>Setting type <span class=\"hint\">select all that apply<\/span><\/label>\n        <div class=\"option-grid\" id=\"opt-setting\"><\/div>\n      <\/div>\n      <div class=\"form-field\">\n        <label>Specialty mix <span class=\"hint\">optional<\/span><\/label>\n        <div class=\"option-grid\" id=\"opt-specialty\"><\/div>\n      <\/div>\n      <div class=\"form-field\">\n        <label>AMS maturity<\/label>\n        <div class=\"option-grid\" id=\"opt-maturity\"><\/div>\n      <\/div>\n      <div class=\"form-field\">\n        <label>Known challenges <span class=\"hint\">optional<\/span><\/label>\n        <div class=\"option-grid\" id=\"opt-challenge\"><\/div>\n      <\/div>\n      <div class=\"form-field\">\n        <label>Resources \/ infrastructure <span class=\"hint\">select all that apply<\/span><\/label>\n        <div class=\"option-grid\" id=\"opt-resource\"><\/div>\n      <\/div>\n      <div class=\"form-field\">\n        <label>Additional context <span class=\"hint\">free text, optional<\/span><\/label>\n        <textarea class=\"free-text\" id=\"free-context\" placeholder=\"e.g. District general hospital, rising CPE rates, no ID consultant on site, paper-based prescribing in 2 wards...\"><\/textarea>\n      <\/div>\n      <button class=\"analyze-btn\" id=\"analyze-btn\">\u00a7 Generate Playbook<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"results-section\" id=\"results-section\">\n    <div class=\"results-header\">Your tailored playbook<\/div>\n    <div class=\"results-sub\" id=\"results-sub\"><\/div>\n\n    <div style=\"padding: 10px 16px; border: 1px dashed var(--accent); background: transparent; margin: 16px 0 20px; font-family:'JetBrains Mono',monospace; font-size:10px; text-transform:uppercase; letter-spacing:1.5px; color:var(--accent);\">\n      \u26a0 Educational output. Every recommendation below requires review by a qualified AMS expert before implementation.\n    <\/div>\n\n    <div class=\"narrative-panel\" id=\"narrative-panel\">\n      <div class=\"narrative-header\">\n        <span>\u00a7 Contextual narrative<\/span>\n        <span class=\"ai-tag\">AI-generated \u00b7 review required<\/span>\n      <\/div>\n      <div class=\"narrative-content\" id=\"narrative-content\">\n        <div class=\"narrative-loading\">Generating contextual narrative<\/div>\n      <\/div>\n    <\/div>\n\n    <div id=\"results-list\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- =================== ABOUT VIEW =================== -->\n<section id=\"view-about\" style=\"display:none;\">\n  <div style=\"max-width:760px;\">\n    <h2 style=\"font-family:Fraunces,serif; font-size:32px; margin-bottom:16px;\">About this atlas<\/h2>\n\n    <div style=\"padding: 20px 24px; border: 2px solid var(--accent); background: var(--paper-warm); margin-bottom: 24px;\">\n      <div style=\"font-family:'JetBrains Mono',monospace; font-size:10px; text-transform:uppercase; letter-spacing:2px; color:var(--accent); margin-bottom:10px;\">\u00a7 Important Caveat<\/div>\n      <p style=\"font-size:14.5px; line-height:1.6; margin-bottom:8px;\"><strong>This is an educational tool.<\/strong> It is designed for teaching, discussion, and orientation to the AMS literature. It is not clinical decision support, not a guideline, and not a substitute for local policy.<\/p>\n      <p style=\"font-size:14.5px; line-height:1.6;\"><strong>All recommendations generated by this tool \u2014 including hospital-matching results and AI-generated narratives \u2014 must be reviewed and validated by a qualified AMS expert before any clinical, operational, or policy implementation.<\/strong><\/p>\n    <\/div>\n\n    <div style=\"font-size:15px; line-height:1.7;\">\n      <p style=\"margin-bottom:14px;\">The Stewardship Atlas organises named antimicrobial stewardship strategies drawn from the wider AMS literature into a single navigable structure of <strong>17 families<\/strong> containing <strong>107 individual interventions<\/strong>.<\/p>\n      <p style=\"margin-bottom:14px;\">Each strategy entry includes: mechanism, evidence tier, typical setting, and a concise impact statement. <strong>Policy sources and citations have been deliberately omitted<\/strong> \u2014 users must verify every strategy against current local and national guidance (WHO, CDC, IDSA\/SHEA, ESCMID, NICE, UKHSA, and peer-reviewed literature) before any teaching, clinical, or policy use. These are teaching summaries only, not referenced guidelines.<\/p>\n      <p style=\"margin-bottom:14px;\"><strong>Evidence tiers<\/strong> are a simplified categorisation:<\/p>\n      <ul style=\"margin: 0 0 14px 20px;\">\n        <li><strong>High<\/strong> \u2014 multiple RCTs or meta-analyses, endorsed by major guidelines<\/li>\n        <li><strong>Moderate<\/strong> \u2014 consistent observational evidence and guideline endorsement<\/li>\n        <li><strong>Limited \/ setting-specific<\/strong> \u2014 evidence varies or is specific to certain contexts<\/li>\n        <li><strong>Emerging<\/strong> \u2014 pre-adoption; active research, not standard of care<\/li>\n      <\/ul>\n      <p style=\"margin-bottom:14px;\">The hospital-matching engine uses a <strong>hybrid approach<\/strong>: a transparent rule-based scoring system triages strategies against the profile, and an optional AI-generated narrative contextualises the top-ranked strategies. The rule-based scores are fully auditable \u2014 each score includes the reasons that produced it. The narrative layer is informational and must be treated with appropriate caution; AI outputs can be subtly wrong even when they sound authoritative.<\/p>\n\n      <div style=\"margin-top:32px; padding-top:20px; border-top: 1px solid var(--ink);\">\n        <div style=\"font-family:'JetBrains Mono',monospace; font-size:10px; text-transform:uppercase; letter-spacing:2px; color:var(--muted); margin-bottom:8px;\">\u00a7 Authorship<\/div>\n        <p style=\"font-family:Fraunces,serif; font-size:18px; margin-bottom:4px;\"><strong>Dr Suryabrata Banerjee<\/strong><\/p>\n        <p style=\"font-size:13px; color:var(--slate); margin-bottom:8px;\">Consultant Microbiologist &amp; Clinical Lead<\/p>\n        <p style=\"font-family:Fraunces,serif; font-style:italic; font-size:15px; color:var(--accent);\">microregistrar.com<\/p>\n      <\/div>\n\n      <p style=\"font-size:13px; color:var(--muted); margin-top:24px; font-style:italic;\">Compiled for educational use in FRCPath preparation, ESCMID\/ESGAID training, and NHS AMS team onboarding. Not a substitute for clinical guidelines.<\/p>\n    <\/div>\n  <\/div>\n<\/section>\n\n<div class=\"footer-note\">\n  <span>\u00a7 AMS Strategy Atlas \u00b7 Dr Suryabrata Banerjee \u00b7 microregistrar.com<\/span>\n  <span>Educational use only \u2014 all recommendations require AMS expert review<\/span>\n  <span>Evidence tiers are simplified \u2014 see About<\/span>\n<\/div>\n\n<\/main>\n\n<!-- =================== MODAL =================== -->\n<div class=\"modal-backdrop\" id=\"modal-backdrop\">\n  <div class=\"modal\">\n    <button class=\"modal-close\" id=\"modal-close\">Close \u00d7<\/button>\n    <div class=\"modal-header\">\n      <div class=\"modal-tag\" id=\"m-tag\"><\/div>\n      <h2 class=\"modal-title\" id=\"m-title\"><\/h2>\n      <p class=\"modal-oneliner\" id=\"m-oneliner\"><\/p>\n    <\/div>\n    <div class=\"modal-body\">\n      <div class=\"section-block\">\n        <div class=\"section-label\">Mechanism \u00b7 How it works<\/div>\n        <div class=\"section-content\" id=\"m-mechanism\"><\/div>\n      <\/div>\n      <div class=\"section-block\">\n        <div class=\"section-label\">Evidence tier<\/div>\n        <div class=\"section-content\"><span class=\"evidence-badge\" id=\"m-evidence\"><\/span><\/div>\n      <\/div>\n      <div class=\"section-block\">\n        <div class=\"section-label\">Potential impact<\/div>\n        <div class=\"section-content\" id=\"m-impact\"><\/div>\n      <\/div>\n      <div class=\"section-block\">\n        <div class=\"section-label\">Applicable settings<\/div>\n        <div class=\"section-content\"><div class=\"settings-row\" id=\"m-settings\"><\/div><\/div>\n      <\/div>\n      <div class=\"section-block\" id=\"m-caveat-block\" style=\"display:none;\">\n        <div class=\"section-label\">Caveat<\/div>\n        <div class=\"section-content\" id=\"m-caveat\" style=\"font-style:italic; color:var(--slate);\"><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n\/\/ ============================================================\n\/\/ DATA MODEL\n\/\/ Families \u2192 Strategies with full metadata\n\/\/ ============================================================\n\nconst FAMILIES = [\n  {\n    id: 'A', name: 'Prescribing & Clinical Decision', tag: 'Core prescribing',\n    description: 'How antibiotics are started, chosen, narrowed and stopped at the point of care.',\n    strategies: [\n      { id:'A1', name:'Start Smart Then Focus', oneliner:'Appropriate empiric therapy + structured 48\u201372h review.',\n        mechanism:'Early empiric cover based on severity and local epidemiology (\"start smart\"), followed by formal review at 48\u201372 hours once cultures return. Review checklist covers indication, cultures, route, duration.',\n        evidence:'high', impact:'Improves appropriateness, reduces DOT, reduces broad-spectrum exposure.',\n        settings:['Acute hospital','ICU','Surgical','ED'] },\n      { id:'A2', name:'Antibiotic Timeout', oneliner:'Self-directed reassessment at 48\u201372h.',\n        mechanism:'Prescriber-driven structured reassessment without external policing. Often embedded in EHR order-set review prompts.',\n        evidence:'mod', impact:'Lower-resource alternative to PAF; moderate effect on DOT.',\n        settings:['Acute hospital','ED','Outpatient'] },\n      { id:'A3', name:'Handshake Stewardship', oneliner:'Daily in-person rounds with collegial feedback.',\n        mechanism:'AMS pharmacist\/ID physician attends wards, reviews cases face-to-face, no formal pre-authorisation. Relies on relational influence.',\n        evidence:'mod', impact:'Sustained reductions in broad-spectrum use; high acceptability.',\n        settings:['Paediatric','Acute hospital','ICU'] },\n      { id:'A4', name:'Day-3 Bundle Review \/ 72h Review', oneliner:'Structured MDT review on day 3.',\n        mechanism:'Mandatory structured review at 72h covering de-escalation, IV-PO, duration, and stop date by consultant or pharmacist.',\n        evidence:'mod', impact:'Reduces DOT; improves documentation quality.',\n        settings:['Acute hospital','ICU'] },\n      { id:'A5', name:'De-escalation', oneliner:'Narrow spectrum once cultures known.',\n        mechanism:'Switch from broad empiric cover to narrowest effective agent based on culture and clinical response; also stop redundant combinations.',\n        evidence:'high', impact:'Reduces collateral damage, C. difficile, resistance pressure.',\n        settings:['Acute hospital','ICU','Surgical'] },\n      { id:'A6', name:'Duration Optimisation (\"Shorter is Better\")', oneliner:'Guideline-based shorter courses.',\n        mechanism:'Systematic adoption of evidence-based shorter durations (e.g. 5-day CAP, 7-day GN bacteraemia, 7-day complicated UTI). Enforced via default order-set durations and auto-stops.',\n        evidence:'high', impact:'Among highest-yield AMS interventions; large DOT reduction.',\n        settings:['All settings'] },\n      { id:'A7', name:'IV-to-Oral Switch', oneliner:'Early conversion where absorption permits.',\n        mechanism:'Protocolised switch criteria (clinically improving, tolerating oral, no malabsorption, suitable oral agent). Often pharmacist-led.',\n        evidence:'high', impact:'Reduces LOS, CLABSI risk, cost. NHS England IVOST programme targets 50% switch by day 3.',\n        settings:['Acute hospital'] },\n      { id:'A8', name:'Dose Optimisation (PK\/PD)', oneliner:'Extended infusions, renal\/hepatic dosing.',\n        mechanism:'PK\/PD-informed dosing including extended\/continuous beta-lactam infusion, renal\/hepatic adjustment, obesity dosing.',\n        evidence:'mod', impact:'Improves attainment of PK\/PD targets; particularly important in critical illness and MDR infection.',\n        settings:['ICU','Haematology','Complex infection'] },\n      { id:'A9', name:'Therapeutic Drug Monitoring', oneliner:'Measured-concentration-guided dosing.',\n        mechanism:'Vancomycin AUC:MIC, aminoglycoside levels, beta-lactam TDM in ICU, azole TDM (voriconazole, posaconazole).',\n        evidence:'high', impact:'Reduces toxicity, improves efficacy; particularly impactful for voriconazole.',\n        settings:['ICU','Haematology','Renal'] },\n      { id:'A10', name:'Risk-Stratified Empiric Pathways', oneliner:'Severity- and host-specific empiric choice.',\n        mechanism:'Empiric therapy keyed to CURB-65 (CAP), sepsis pathway severity, HAP vs CAP, device-associated, immunocompromised, prior culture\/resistance.',\n        evidence:'high', impact:'Reduces both undertreatment and overuse by improving initial targeting.',\n        settings:['ED','Acute hospital','ICU'] },\n      { id:'A11', name:'Perioperative Prophylaxis Optimisation', oneliner:'Right agent, right time, 24h stop.',\n        mechanism:'Agent choice by procedure, dosing 30\u201360 min pre-incision, weight-based redosing, \u226424h duration, no post-drain prophylaxis.',\n        evidence:'high', impact:'Reduces SSI and AMR pressure; \"stop at 24h\" is a high-yield target.',\n        settings:['Surgical','Obstetric'] },\n      { id:'A12', name:'Avoid Unnecessary Combinations', oneliner:'Stop overlapping spectrum and double cover.',\n        mechanism:'Review of double gram-negative cover, anti-anaerobe redundancy, unnecessary MRSA cover. Often combined with de-escalation.',\n        evidence:'mod', impact:'Reduces toxicity and resistance selection.',\n        settings:['Acute hospital','ICU'] }\n    ]\n  },\n  {\n    id: 'B', name: 'Restrictive Strategies', tag: 'Access control',\n    description: 'Structural controls on which agents can be prescribed, by whom, and for how long.',\n    strategies: [\n      { id:'B1', name:'Pre-Authorisation', oneliner:'Approval required from ID\/AMS before dispensing.',\n        mechanism:'Selected restricted agents (often carbapenems, novel \u03b2-lactams, echinocandins) require approval prior to dispensing.',\n        evidence:'high', impact:'Among most effective interventions for reducing restricted drug use; risk of delay if not well-staffed.',\n        settings:['Acute hospital','ICU'] },\n      { id:'B2', name:'Formulary Restriction', oneliner:'Not all agents available; some indication-limited.',\n        mechanism:'Local formulary restricts availability of agents or limits to specific indications. Tiered restriction adds escalation layers.',\n        evidence:'high', impact:'Shapes prescribing defaults. Works synergistically with guidelines.',\n        settings:['All hospital settings'] },\n      { id:'B3', name:'Automatic Stop Orders', oneliner:'Default stop dates enforced by EHR.',\n        mechanism:'EHR automatically stops antibiotic after defined duration (e.g. 24h for perioperative prophylaxis, 7 days for most courses) unless actively re-authorised.',\n        evidence:'mod', impact:'Effective for perioperative prophylaxis; requires safety netting.',\n        settings:['Acute hospital','Surgical'] },\n      { id:'B4', name:'Reserve-Class Restriction', oneliner:'AWaRe Reserve agents gated.',\n        mechanism:'Reserve agents (colistin, ceftazidime-avibactam, cefiderocol, linezolid in some contexts) limited to MDR indications with ID approval.',\n        evidence:'mod', impact:'Preserves activity of last-resort agents.',\n        settings:['Acute hospital','ICU'] },\n      { id:'B5', name:'Hard Stops in CPOE', oneliner:'EHR blocks prescription without justification.',\n        mechanism:'EHR prevents ordering of restricted agents without completing approval workflow or entering rationale.',\n        evidence:'mod', impact:'Forces compliance with restriction pathway; risk of override fatigue.',\n        settings:['EHR-mature settings'] }\n    ]\n  },\n  {\n    id: 'C', name: 'Diagnostic Stewardship', tag: 'Right test, right time',\n    description: 'Optimising when and how diagnostic tests are ordered and interpreted to reduce unnecessary therapy.',\n    strategies: [\n      { id:'C1', name:'Rapid Diagnostics-Coupled AMS', oneliner:'Real-time AMS response to rapid blood culture ID.',\n        mechanism:'MALDI-TOF, BioFire BCID, Verigene, T2 Biosystems, Accelerate Pheno linked to 24\/7 pharmacist response for therapy optimisation.',\n        evidence:'high', impact:'Reduces time to optimal therapy, LOS, mortality in bacteraemia.',\n        settings:['Acute hospital with rapid dx capability'] },\n      { id:'C2', name:'Syndromic PCR Panel Stewardship', oneliner:'Gatekeeping and interpretation of multiplex panels.',\n        mechanism:'ME panel, GI panel, respiratory panels require clinical criteria for ordering and structured interpretation to prevent overtreatment of detected colonisers.',\n        evidence:'mod', impact:'Reduces inappropriate antibiotic starts from panel false-positive or clinically irrelevant findings.',\n        settings:['Acute hospital','ED'] },\n      { id:'C3', name:'Urine Culture Gatekeeping', oneliner:'Reflex-on-pyuria, specimen rejection criteria.',\n        mechanism:'Lab releases culture only if dipstick\/microscopy-positive; rejection of poorly collected or contaminated samples.',\n        evidence:'mod', impact:'Reduces ASB overtreatment and catheter-associated treatment.',\n        settings:['All settings'] },\n      { id:'C4', name:'Respiratory Culture Stewardship', oneliner:'Quality scoring before processing sputum.',\n        mechanism:'Bartlett\/Q-score for sputum quality; rejection of oropharyngeal contamination; endotracheal aspirate quality thresholds.',\n        evidence:'mod', impact:'Reduces treatment of colonisers; improves culture yield interpretation.',\n        settings:['Respiratory','ICU'] },\n      { id:'C5', name:'Two-Step C. difficile Algorithms', oneliner:'GDH+toxin or NAAT+toxin to avoid overdiagnosis.',\n        mechanism:'Two-step algorithm distinguishes colonisation from infection; most UK labs use GDH+toxin EIA with NAAT arbitration.',\n        evidence:'high', impact:'Reduces overtreatment of colonisation; critical for accurate surveillance.',\n        settings:['All hospital and LTCF'] },\n      { id:'C6', name:'Blood Culture Stewardship', oneliner:'Indication, volume, contamination control.',\n        mechanism:'Indication-based ordering, \u22652 sets, adequate blood volume, skin antisepsis bundles, dedicated phlebotomy teams.',\n        evidence:'high', impact:'Higher yield, fewer contaminants, less unnecessary treatment of CoNS.',\n        settings:['All hospital'] },\n      { id:'C7', name:'MRSA Nasal PCR De-escalation', oneliner:'Negative swab supports stopping anti-MRSA cover.',\n        mechanism:'High NPV (~99%) of nasal MRSA PCR supports stopping empiric vancomycin\/linezolid in pneumonia when negative.',\n        evidence:'high', impact:'Median 1.4-day reduction in anti-MRSA therapy.',\n        settings:['Acute hospital with PCR capability'] },\n      { id:'C8', name:'Neonatal EOS Calculator', oneliner:'Kaiser Permanente calculator reduces antibiotic starts.',\n        mechanism:'Multivariable predictor of early-onset sepsis risk based on maternal and neonatal factors; guides observation vs antibiotic starts.',\n        evidence:'high', impact:'~50% reduction in antibiotic exposure in well-appearing neonates.',\n        settings:['Neonatology'] },\n      { id:'C9', name:'Host-Response Signatures', oneliner:'Gene-expression discrimination of bacterial vs viral.',\n        mechanism:'Commercial assays (e.g. TriVerity, MeMed BV, HostDx) use host gene expression or protein signatures.',\n        evidence:'emerging', impact:'Promising in RTI triage; real-world AMS effect not yet established.',\n        settings:['ED','Primary care (emerging)'],\n        caveat:'Pre-adoption in most health systems; evidence base still maturing.' }\n    ]\n  },\n  {\n    id: 'D', name: 'Biomarker-Guided Therapy', tag: 'Objective stop cues',\n    description: 'Using measured biomarkers to guide initiation and \u2014 especially \u2014 discontinuation.',\n    strategies: [\n      { id:'D1', name:'Procalcitonin-Guided Stopping', oneliner:'PCT trajectory guides cessation.',\n        mechanism:'Structured algorithm stops antibiotics when PCT falls below threshold or drops >80% from peak. Strongest evidence in ICU and LRTI.',\n        evidence:'high', impact:'Mean 2\u20133 day DOT reduction in LRTI\/sepsis with no safety signal.',\n        settings:['ICU','Acute hospital LRTI'] },\n      { id:'D2', name:'CRP-Guided Prescribing (Primary Care)', oneliner:'Point-of-care CRP reduces RTI prescribing.',\n        mechanism:'POCT CRP with cutoffs (<20 no antibiotic, 20\u2013100 shared decision, >100 consider) in LRTI.',\n        evidence:'high', impact:'~30% relative reduction in antibiotic prescribing for LRTI.',\n        settings:['Primary care','Community pharmacy'] },\n      { id:'D3', name:'Viral PCR Linkage to Antibacterial Stopping', oneliner:'Positive viral panel prompts review.',\n        mechanism:'Protocolised reassessment when respiratory viral PCR positive in mild\/moderate LRTI without clear bacterial features.',\n        evidence:'mod', impact:'Variable effect; depends on clinician confidence and test turnaround.',\n        settings:['Acute hospital','ED'] }\n    ]\n  },\n  {\n    id: 'E', name: '\"Do Not Treat\" Stewardship', tag: 'Prevent unnecessary starts',\n    description: 'Syndromic strategies that prevent initiation when microbiology generates pressure to treat without infection.',\n    strategies: [\n      { id:'E1', name:'Asymptomatic Bacteriuria Non-Treatment', oneliner:'Do not treat ASB outside specific populations.',\n        mechanism:'Structured reminders, pathway gates, lab comments. Exceptions: pregnancy, pre-urological procedure with mucosal trauma.',\n        evidence:'high', impact:'Major source of unnecessary antibiotic exposure \u2014 especially in LTCF and post-catheterisation.',\n        settings:['All settings, especially LTCF'] },\n      { id:'E2', name:'Colonisation vs Infection Framework', oneliner:'Teach and enforce clinical correlation.',\n        mechanism:'Structured prompts on reports, teaching modules, pre-prescription checkpoints distinguishing colonisation (wound swabs, respiratory) from infection.',\n        evidence:'mod', impact:'Reduces treatment of growths lacking clinical syndrome.',\n        settings:['All settings'] },\n      { id:'E3', name:'Viral RTI Non-Antibiotic Pathways', oneliner:'Explicit no-antibiotic scripts for URTI.',\n        mechanism:'Clinical decision tools and patient scripts direct management of otitis media, pharyngitis (excl GAS), sinusitis, bronchitis without antibiotics.',\n        evidence:'high', impact:'Primary care is highest-volume prescribing setting; pathway adherence has large population impact.',\n        settings:['Primary care','ED','Paediatrics'] },\n      { id:'E4', name:'Screening-Positive Non-Treatment', oneliner:'MRSA\/VRE\/CPE colonisation \u2260 treatment.',\n        mechanism:'Active protocols prevent treatment of screening-positive colonisation; may trigger IPC measures without antimicrobial therapy.',\n        evidence:'high', impact:'Prevents systemic treatment of asymptomatic colonisation.',\n        settings:['All hospital'] }\n    ]\n  },\n  {\n    id: 'F', name: 'Laboratory-Side Prescribing Interventions', tag: 'Report design as intervention',\n    description: 'The microbiology lab is a prescribing intervention. Report design, expert rules, and selective disclosure shape clinician choices.',\n    strategies: [\n      { id:'F1', name:'Selective Reporting', oneliner:'Suppress broad-spectrum susceptibilities by default.',\n        mechanism:'Lab withholds results for restricted or unnecessarily broad agents unless clinically required. E.g. suppressing ciprofloxacin in uncomplicated UTI.',\n        evidence:'mod', impact:'Nudges narrower prescribing with minimal workflow burden.',\n        settings:['All lab settings'] },\n      { id:'F2', name:'Cascade \/ Tiered Reporting', oneliner:'Reveal broader agents only if narrower fail.',\n        mechanism:'Sequential reporting \u2014 first-line agent susceptibilities released first; second-line only released on request or if resistance detected.',\n        evidence:'mod', impact:'Supports first-line prescribing; requires clinician understanding.',\n        settings:['All lab settings'] },\n      { id:'F3', name:'Interpretive Comments', oneliner:'Free-text nudges on the report.',\n        mechanism:'Appended comments recommending de-escalation, narrow options, stop if colonisation, source control advice.',\n        evidence:'mod', impact:'High acceptability; variable effect depending on recipient.',\n        settings:['All lab settings'] },\n      { id:'F4', name:'EUCAST Expert Rules', oneliner:'Suppress results inconsistent with known resistance.',\n        mechanism:'EUCAST ERP applies rules (e.g. ESBL phenotype \u2192 edit cephalosporin results) to prevent misleading susceptibility reporting.',\n        evidence:'high', impact:'Critical for safe reporting; prevents inappropriate use of compromised agents.',\n        settings:['All lab settings'] },\n      { id:'F5', name:'Reflex Testing Algorithms', oneliner:'Auto-extend testing based on first results.',\n        mechanism:'Automatic addition of tests (e.g. carbapenemase testing if meropenem R; serology if screening positive) without repeat request.',\n        evidence:'mod', impact:'Faster definitive answers; better stewardship downstream.',\n        settings:['All lab settings'] },\n      { id:'F6', name:'Syndrome-Specific Antibiograms', oneliner:'Antibiograms curated to clinical syndrome.',\n        mechanism:'Stratified antibiograms (e.g. uncomplicated community UTI, HAP, SSTI) rather than whole-isolate aggregates.',\n        evidence:'mod', impact:'More clinically useful than pooled antibiograms.',\n        settings:['All acute hospitals'] },\n      { id:'F7', name:'Unit-Specific \/ Onset-Stratified Antibiograms', oneliner:'ICU, haematology, community-onset separately.',\n        mechanism:'Antibiograms by ward, age-band, community vs hospital onset to inform local empiric choice.',\n        evidence:'mod', impact:'Improves empiric targeting; reveals unit-level AMR trends.',\n        settings:['Acute hospital'] },\n      { id:'F8', name:'Prior Isolate Visibility at Prescribing', oneliner:'Show patient\u2019s previous results in the EHR.',\n        mechanism:'EHR surfaces patient\u2019s prior MDR colonisation\/infection at point of prescribing.',\n        evidence:'mod', impact:'Improves empiric agent selection in patients with prior resistant organisms.',\n        settings:['EHR-mature settings'] },\n      { id:'F9', name:'Blood Culture Contamination Commenting', oneliner:'Flag probable skin contaminants.',\n        mechanism:'Automated or narrative comments identifying likely contamination (single-bottle CoNS, mixed skin flora).',\n        evidence:'mod', impact:'Reduces treatment of likely contaminants; protects vancomycin exposure.',\n        settings:['All hospital'] }\n    ]\n  },\n  {\n    id: 'G', name: 'Digital & Choice Architecture', tag: 'Defaults that do the work',\n    description: 'EHR design and default engineering \u2014 often the highest-leverage, lowest-friction AMS interventions.',\n    strategies: [\n      { id:'G1', name:'Indication-Mandatory Prescribing', oneliner:'No order without selected indication.',\n        mechanism:'EHR requires selecting an indication from a structured list before order completion.',\n        evidence:'mod', impact:'Enables audit by indication; improves prescriber reflection.',\n        settings:['EHR-mature settings'] },\n      { id:'G2', name:'Mandatory Duration & Review Fields', oneliner:'No open-ended orders.',\n        mechanism:'Prescriber must enter a finite duration and\/or review date; no perpetual prescriptions.',\n        evidence:'mod', impact:'Eliminates \"no stop date\" orders that drive extended courses.',\n        settings:['EHR-mature settings'] },\n      { id:'G3', name:'Off-Guideline Rationale Required', oneliner:'Text-entry mandatory for deviation.',\n        mechanism:'EHR demands free-text justification for non-formulary or off-guideline prescribing. See also \"Accountable Justification\" (H1) \u2014 same mechanism in behavioural framing.',\n        evidence:'high', impact:'~10\u201315% reduction in inappropriate prescribing in primary care (Meeker 2016).',\n        settings:['EHR-mature settings'] },\n      { id:'G4', name:'Default Shortest Evidence-Based Duration', oneliner:'Order sets pre-populate the short option.',\n        mechanism:'Choice architecture: the default is the evidence-based shortest course; longer durations require active deviation.',\n        evidence:'mod', impact:'High-yield, low-friction intervention in EHR-mature settings.',\n        settings:['Acute hospital with EHR'] },\n      { id:'G5', name:'Default Oral and Narrow-Spectrum First', oneliner:'Order-set ordering engineered for stewardship.',\n        mechanism:'Order-set sequencing presents oral before IV, narrow before broad; broader hidden behind extra clicks.',\n        evidence:'mod', impact:'Reduces reflexive broad-spectrum IV starts.',\n        settings:['Acute hospital with EHR'] },\n      { id:'G6', name:'Clinical Decision Support Alerts', oneliner:'Real-time EHR nudges.',\n        mechanism:'Alerts for allergy conflicts, duplicate therapy, renal dosing, redundant spectrum.',\n        evidence:'mod', impact:'Effect moderated by alert fatigue \u2014 must be judiciously designed.',\n        settings:['EHR-mature settings'],\n        caveat:'Over-alerting causes fatigue and override; tight curation is essential.' },\n      { id:'G7', name:'Antibiotic Dashboards', oneliner:'DDD\/DOT and resistance visualised.',\n        mechanism:'Near-real-time dashboards showing consumption, compliance, resistance overlays at ward\/trust level.',\n        evidence:'mod', impact:'Enables targeted AMS effort; visibility drives accountability.',\n        settings:['Trust\/system level'] },\n      { id:'G8', name:'Prescriber Scorecards', oneliner:'Individual prescriber-level reporting.',\n        mechanism:'Periodic peer-comparison reports on volume, mix, and guideline adherence.',\n        evidence:'high', impact:'Peer-comparison is one of the best-evidenced behavioural AMS levers.',\n        settings:['Primary care','Hospital prescribers'] }\n    ]\n  },\n  {\n    id: 'H', name: 'Behavioural & Social Strategies', tag: 'Nudges and norms',\n    description: 'Low-cost, high-evidence behavioural interventions drawn from nudge science.',\n    strategies: [\n      { id:'H1', name:'Accountable Justification', oneliner:'Mandatory EHR rationale for off-guideline.',\n        mechanism:'Free-text justification requirement in EHR when deviating. Public-facing within the record.',\n        evidence:'high', impact:'Large, sustained reductions in inappropriate prescribing in primary care.',\n        settings:['Primary care','Outpatient','Hospital'] },\n      { id:'H2', name:'Peer Comparison Feedback', oneliner:'\"You are \/ are not a top prescriber\".',\n        mechanism:'Email or EHR-embedded messages comparing individual rates with peers.',\n        evidence:'high', impact:'Hallsworth 2016: ~3.3% absolute reduction in primary care prescribing from a single CMO letter.',\n        settings:['Primary care','Outpatient'] },\n      { id:'H3', name:'Commitment Posters', oneliner:'Public pledges visible in clinic rooms.',\n        mechanism:'Clinician signs and displays a commitment to judicious prescribing in consultation rooms.',\n        evidence:'high', impact:'~20% reduction in inappropriate RTI prescribing \u2014 near-zero cost.',\n        settings:['Primary care'] },\n      { id:'H4', name:'Delayed \/ Back-Pocket Prescribing', oneliner:'Prescription if not better in X days.',\n        mechanism:'Patient receives prescription to fill only if symptoms fail to improve or worsen by a defined time.',\n        evidence:'high', impact:'Reduces antibiotic consumption with comparable clinical outcomes in self-limiting RTI.',\n        settings:['Primary care','ED','Dentistry'] },\n      { id:'H5', name:'Watchful Waiting & Safety Netting', oneliner:'Active observation with reconsultation criteria.',\n        mechanism:'Structured scripts defining when to return, red flags, expected course.',\n        evidence:'mod', impact:'Supports no-antibiotic consultations; lowers return rates when done well.',\n        settings:['Primary care','ED'] },\n      { id:'H6', name:'Shared Decision Aids \/ TARGET Leaflets', oneliner:'Structured conversation tools.',\n        mechanism:'TARGET (RCGP) leaflets, decision aids, and scripts for specific RTIs.',\n        evidence:'mod', impact:'Improves patient acceptance of no-antibiotic decisions.',\n        settings:['Primary care','Community pharmacy'] }\n    ]\n  },\n  {\n    id: 'I', name: 'Transitions of Care', tag: 'Discharge & OPAT',\n    description: 'A large share of total antibiotic days occur after hospital discharge. Transitions are an under-targeted stewardship domain.',\n    strategies: [\n      { id:'I1', name:'Discharge Antibiotic Review', oneliner:'Structured review pre-discharge.',\n        mechanism:'Pharmacist or AMS team review of indication, duration, route before discharge prescription; tail-shortening.',\n        evidence:'mod', impact:'Discharge prescriptions account for 30\u201350% of total hospital antibiotic days.',\n        settings:['Acute hospital'] },\n      { id:'I2', name:'Tail-Duration Shortening', oneliner:'Avoid unnecessarily long discharge courses.',\n        mechanism:'Active review: has patient met stop criteria? Can total course be shorter than originally planned?',\n        evidence:'mod', impact:'Reduces \"just in case\" extended discharge courses.',\n        settings:['Acute hospital'] },\n      { id:'I3', name:'Oral Step-Down at Discharge', oneliner:'Oral complete courses where bioavailability permits.',\n        mechanism:'Default to oral discharge where agent\/infection allow; avoids unnecessary OPAT.',\n        evidence:'high', impact:'Major cultural shift post-OVIVA\/POET for bone\/joint infection and endocarditis.',\n        settings:['Acute hospital'] },\n      { id:'I4', name:'OPAT Stewardship', oneliner:'MDT governance of outpatient IV.',\n        mechanism:'Structured weekly MDT review, defined stop dates, complication monitoring, line management.',\n        evidence:'high', impact:'Reduces IV days, CLABSI, readmissions; OPAT is now recognised as an AMS domain.',\n        settings:['OPAT services'] },\n      { id:'I5', name:'Follow-Up Stop-Date Ownership', oneliner:'Named clinician owns the stop decision.',\n        mechanism:'Explicit handover of responsibility for stopping or reviewing \u2014 avoids courses continuing by inertia.',\n        evidence:'low', impact:'Addresses a common gap where no-one owns stopping.',\n        settings:['OPAT','Complex cases'] }\n    ]\n  },\n  {\n    id: 'J', name: 'Allergy Stewardship', tag: 'Restore beta-lactam access',\n    description: 'Penicillin allergy labels reduce Access-class use, increase broad-spectrum alternatives, and increase adverse outcomes. De-labelling is increasingly a core AMS activity.',\n    strategies: [\n      { id:'J1', name:'Structured Allergy History', oneliner:'Systematic characterisation of the reaction.',\n        mechanism:'Protocolised questions distinguishing likely IgE, delayed T-cell, intolerance, or label without reaction.',\n        evidence:'high', impact:'Foundation for all de-labelling pathways.',\n        settings:['All settings'] },\n      { id:'J2', name:'PEN-FAST Risk Stratification', oneliner:'Validated 5-point risk tool.',\n        mechanism:'Score-based stratification to identify low-risk patients suitable for direct oral challenge.',\n        evidence:'high', impact:'Enables safe, scalable allergy assessment.',\n        settings:['All settings'] },\n      { id:'J3', name:'Direct Oral Challenge', oneliner:'Single supervised dose for low-risk patients.',\n        mechanism:'Low-risk patients (PEN-FAST 0\u20131) receive observed oral amoxicillin challenge; positive de-labelling.',\n        evidence:'high', impact:'Expands Access-antibiotic use; reduces vancomycin, clindamycin, fluoroquinolone use.',\n        settings:['Allergy-integrated hospital services'] },\n      { id:'J4', name:'Skin Testing Pathways', oneliner:'For intermediate-risk labels.',\n        mechanism:'Formal skin-prick\/intradermal testing, typically allergist-led, for intermediate-risk patients.',\n        evidence:'high', impact:'Enables de-labelling of a broader population than oral challenge alone.',\n        settings:['Specialist allergy services'] },\n      { id:'J5', name:'Perioperative Allergy Optimisation', oneliner:'Resolve labels before surgery.',\n        mechanism:'Elective surgical pathways screen and address allergy labels to ensure optimal prophylaxis (cefazolin).',\n        evidence:'mod', impact:'Improves SSI prevention; reduces vancomycin use.',\n        settings:['Surgical','Perioperative'] }\n    ]\n  },\n  {\n    id: 'K', name: 'Setting-Specific Programmes', tag: 'Context-specific playbooks',\n    description: 'Named AMS frameworks for distinct settings \u2014 each with different harms, workflows and intervention menus.',\n    strategies: [\n      { id:'K1', name:'ICU Stewardship', oneliner:'Daily rounds, PCT, de-escalation focus.',\n        mechanism:'Daily AMS rounds, PCT-guided stopping, syndromic de-escalation, TDM, VAP bundles.',\n        evidence:'high', impact:'ICU is highest-density antibiotic-use setting; interventions have outsized effect.',\n        settings:['ICU'] },\n      { id:'K2', name:'Emergency Department Stewardship', oneliner:'Syndrome pathways, delayed prescribing, discharge scripts.',\n        mechanism:'ED-specific order sets, delayed prescribing, reconsultation criteria, discharge handover.',\n        evidence:'mod', impact:'Front-door intervention \u2014 shapes downstream hospital and post-discharge use.',\n        settings:['ED'] },\n      { id:'K3', name:'Surgical Stewardship', oneliner:'Prophylaxis, infection pathways, post-op AMS.',\n        mechanism:'Prophylaxis optimisation, SSI bundles, post-op infection pathways, nutritional and host-factor management.',\n        evidence:'high', impact:'Addresses a high-volume, commonly over-prescribed domain.',\n        settings:['Surgical','Obstetric'] },\n      { id:'K4', name:'Neonatal Stewardship', oneliner:'EOS calculator, rule-in\/rule-out, biomarker-guided stop.',\n        mechanism:'EOS calculator, structured 36\u201348h stop rules, CRP trajectory, blood culture reliance.',\n        evidence:'high', impact:'~50% reduction in neonatal antibiotic exposure achievable.',\n        settings:['Neonatology'] },\n      { id:'K5', name:'Long-Term Care Facility AMS', oneliner:'McGeer \/ Loeb criteria, ASB non-treatment.',\n        mechanism:'Structured initiation criteria, resident-focused syndromic assessment, ASB non-treatment, UTI pathway.',\n        evidence:'high', impact:'LTCF ASB is a very high-yield target; commonly overtreated.',\n        settings:['LTCF','Nursing homes'] },\n      { id:'K6', name:'OPAT Stewardship', oneliner:'See I4.',\n        mechanism:'Covered under Transitions \u2014 listed here for setting-specific completeness.',\n        evidence:'high', impact:'OPAT deserves its own named programme separate from inpatient AMS.',\n        settings:['OPAT'] },\n      { id:'K7', name:'Outpatient \/ Ambulatory AMS', oneliner:'CDC Core Elements for outpatient.',\n        mechanism:'Clinic-level commitment, action, tracking, expertise, education \u2014 structured around the CDC outpatient framework.',\n        evidence:'mod', impact:'Addresses 80%+ of human antibiotic volume.',\n        settings:['Primary care','Specialty clinics'] },\n      { id:'K8', name:'Dental Stewardship', oneliner:'FGDP\/SDCEP prescribing frameworks.',\n        mechanism:'Dental-specific guidelines; ~5\u201310% of primary care scripts are dental; focus on infection vs pulpitis.',\n        evidence:'mod', impact:'Traditionally undergoverned prescribing domain with visible reduction potential.',\n        settings:['Dental'] },\n      { id:'K9', name:'Community Pharmacy Stewardship', oneliner:'Pharmacy First, triage, protocol supply.',\n        mechanism:'Pharmacist-led triage, defined supply protocols, non-antibiotic management, referral thresholds, POCT integration.',\n        evidence:'mod', impact:'A national-scale community AMS lever in UK; operationally novel.',\n        settings:['Community pharmacy'] },\n      { id:'K10', name:'Low-Resource Setting AMS', oneliner:'WHO Core Components for LMIC.',\n        mechanism:'Stepwise implementation: leadership, diagnostics, guidelines, education, surveillance, IPC integration.',\n        evidence:'mod', impact:'Frames AMS for settings without ID consultants or EHR infrastructure.',\n        settings:['LMIC'] },\n      { id:'K11', name:'End-of-Life AMS', oneliner:'Antibiotic decisions in palliative care.',\n        mechanism:'Decision-making framework for initiation, continuation, withdrawal in palliative contexts; aligned with advance care plans.',\n        evidence:'low', impact:'Often neglected in AMS; reduces burden and aligns care with goals.',\n        settings:['Palliative care','Oncology'] }\n    ]\n  },\n  {\n    id: 'L', name: 'Parallel Antimicrobial Programmes', tag: 'Beyond antibacterials',\n    description: 'Antifungal, antiviral, and antiparasitic stewardship \u2014 distinct programmes, not folded in as afterthoughts.',\n    strategies: [\n      { id:'L1', name:'Antifungal Stewardship (AFS)', oneliner:'Pre-emptive\/empiric\/targeted algorithm.',\n        mechanism:'BDG, galactomannan, PCR-guided initiation\/stop; echinocandin and azole restriction; weekly IFI MDT; TDM for voriconazole\/posaconazole\/isavuconazole.',\n        evidence:'high', impact:'Weekly MDT models improve appropriate use and cost-efficiency; reduces toxicity.',\n        settings:['Haematology','ICU','Solid-organ transplant'] },\n      { id:'L2', name:'Antiviral Stewardship', oneliner:'Oseltamivir, CMV, HSV duration governance.',\n        mechanism:'Test-linked oseltamivir; CMV stewardship in transplant; duration review for herpesviruses; COVID-era antiviral governance; nirsevimab pathway.',\n        evidence:'mod', impact:'Less mature than antibacterial AMS but increasingly formalised.',\n        settings:['Transplant','Haematology','ICU'] },\n      { id:'L3', name:'Antiparasitic Stewardship', oneliner:'Malaria ACT, anthelminthic governance.',\n        mechanism:'Test-before-treat malaria policy; ACT resistance monitoring; ivermectin\/nitazoxanide governance.',\n        evidence:'mod', impact:'Primarily relevant in endemic settings; underdeveloped elsewhere.',\n        settings:['Endemic regions','Travel medicine'] }\n    ]\n  },\n  {\n    id: 'M', name: 'Governance, Policy & Incentives', tag: 'System levers',\n    description: 'Mandatory standards, accreditation, national surveillance and financial incentives that create the conditions for AMS.',\n    strategies: [\n      { id:'M1', name:'CDC\/IDSA-SHEA\/WHO Core Elements', oneliner:'Leadership, expertise, action, tracking, reporting, education.',\n        mechanism:'Structured programme components required for a functional AMS team.',\n        evidence:'high', impact:'Baseline programmatic infrastructure; without these, specific interventions underperform.',\n        settings:['All hospital settings'] },\n      { id:'M2', name:'Dedicated AMS Team', oneliner:'Protected time, multidisciplinary.',\n        mechanism:'ID physician, AMS pharmacist, microbiologist, IPC, IT\/data analyst with protected sessions.',\n        evidence:'high', impact:'Single strongest predictor of sustained AMS impact.',\n        settings:['Acute hospital','Trust level'] },\n      { id:'M3', name:'National Mandatory Standards', oneliner:'CQC, NSQHS, CMS, Joint Commission.',\n        mechanism:'Regulatory requirement for hospitals to have AMS programme (CMS CoP 482.42 in US; CQC expectations in UK; NSQHS Standard 3 in Australia).',\n        evidence:'high', impact:'Policy backbone that drives universal adoption.',\n        settings:['System-level'] },\n      { id:'M4', name:'National Surveillance & Benchmarking', oneliner:'ESPAUR, ESAC-Net, NHSN, GLASS.',\n        mechanism:'National-level consumption and resistance surveillance with public reporting and inter-unit benchmarking.',\n        evidence:'high', impact:'Enables targets, accountability, and cross-system learning.',\n        settings:['National'] },\n      { id:'M5', name:'Incentive-Linked Prescribing Targets', oneliner:'CQUIN, Quality Premium, P4P.',\n        mechanism:'Financial incentives tied to prescribing reduction targets and specific indicators (e.g. UK AMR CQUIN 2016\u20132019).',\n        evidence:'mod', impact:'UK AMR CQUIN drove ~7% reduction in total antibiotic use in acute trusts.',\n        settings:['National health systems'] },\n      { id:'M6', name:'AWaRe Access\/Watch\/Reserve Targets', oneliner:'\u226560% Access use as a national target.',\n        mechanism:'Prescribing and procurement structured by AWaRe classes; WHO target of \u226560% Access antibiotic use.',\n        evidence:'mod', impact:'Single most adoptable stewardship target at population level.',\n        settings:['National'] },\n      { id:'M7', name:'Public Reporting', oneliner:'Transparent consumption and resistance data.',\n        mechanism:'Public publication of hospital- or trust-level AMS and resistance metrics.',\n        evidence:'mod', impact:'Reputational pressure; informed commissioning and public engagement.',\n        settings:['National'] }\n    ]\n  },\n  {\n    id: 'N', name: 'One Health', tag: 'Cross-sector',\n    description: 'Antimicrobial use in veterinary, agricultural, and environmental domains shapes human AMR. One Health stewardship is increasingly part of the AMS master list.',\n    strategies: [\n      { id:'N1', name:'Veterinary Prescribing Targets', oneliner:'RUMA, sector-specific reduction targets.',\n        mechanism:'Livestock sector targets (UK RUMA Targets Task Force) with specific reductions by species.',\n        evidence:'mod', impact:'UK achieved ~55% reduction in food-producing animal antibiotic use (2014\u20132020).',\n        settings:['Agriculture'] },\n      { id:'N2', name:'Agricultural Restriction of HPCIAs', oneliner:'Colistin and growth-promoter bans.',\n        mechanism:'Regulatory restriction of WHO-classified critically important antimicrobials in animals, particularly for growth promotion.',\n        evidence:'high', impact:'Reduces AMR selection pressure at the population level.',\n        settings:['Agriculture'] },\n      { id:'N3', name:'Wastewater Surveillance', oneliner:'Environmental AMR monitoring.',\n        mechanism:'Sampling of sewage, effluent, and surface water for AMR genes and organisms.',\n        evidence:'emerging', impact:'Early-warning for community AMR trends; surveillance layer.',\n        settings:['Public health'] },\n      { id:'N4', name:'Cross-Sector Surveillance', oneliner:'Integrated human-animal-environment reporting.',\n        mechanism:'Integrated reporting across human (ESPAUR), animal (VARSS), and environmental surveillance.',\n        evidence:'mod', impact:'Enables One Health risk assessment.',\n        settings:['National'] }\n    ]\n  },\n  {\n    id: 'O', name: 'Education & Awareness', tag: 'Sustained culture change',\n    description: 'Clinician, patient and public education as an AMS foundation.',\n    strategies: [\n      { id:'O1', name:'Clinician Education', oneliner:'CME, ward teaching, case-based.',\n        mechanism:'Structured teaching sessions, AMS-integrated induction, bedside case-based learning.',\n        evidence:'mod', impact:'Necessary but insufficient alone; amplifies structural interventions.',\n        settings:['All settings'] },\n      { id:'O2', name:'Patient & Public Education', oneliner:'Leaflets, campaigns, school programmes.',\n        mechanism:'Public-facing campaigns, TARGET leaflets, school education (e.g. e-Bug), media campaigns.',\n        evidence:'mod', impact:'Slow population-level effect; foundational for demand-side change.',\n        settings:['Public'] },\n      { id:'O3', name:'WAAW \/ EAAD Campaigns', oneliner:'Annual awareness weeks.',\n        mechanism:'Coordinated national and international annual campaigns (November).',\n        evidence:'low', impact:'Awareness uplift; effect on prescribing is modest without accompanying structural interventions.',\n        settings:['Global'] },\n      { id:'O4', name:'Curriculum Embedding', oneliner:'AMS in undergraduate and postgraduate training.',\n        mechanism:'Structured AMS content in medical, nursing, pharmacy, dental, and allied health curricula.',\n        evidence:'mod', impact:'Long-lead, high-durability change in prescribing culture.',\n        settings:['Education systems'] }\n    ]\n  },\n  {\n    id: 'P', name: 'Emerging & Active-Research', tag: 'Pre-adoption',\n    description: 'Strategies with significant interest but not yet standard-of-care. Include with clear \"emerging\" labelling.',\n    strategies: [\n      { id:'P1', name:'ML Triage for Stewardship Review', oneliner:'Automated case-finding for AMS workload.',\n        mechanism:'ML models flag highest-value cases (likely de-escalation candidates, probable contamination, LOS outliers) for AMS review.',\n        evidence:'emerging', impact:'Promising for AMS workload prioritisation; implementation heterogeneous.',\n        settings:['Research \/ advanced services'],\n        caveat:'Limited external validation; model-drift and fairness concerns.' },\n      { id:'P2', name:'LLM-Assisted Prescribing Audit', oneliner:'Large language models for case review.',\n        mechanism:'LLMs assist audit of prescribing notes against guidelines; flag deviations for human review.',\n        evidence:'emerging', impact:'Unknown. Known failure modes include schema entrainment, sycophancy, and propagated classification error.',\n        settings:['Research only'],\n        caveat:'Pre-adoption. Failure modes documented. Must not be deployed without SOP-led validation (see ESGAID work on LLM failure modes).' },\n      { id:'P3', name:'Phage Stewardship', oneliner:'Phage-susceptibility-guided therapy governance.',\n        mechanism:'Stewardship frameworks for compassionate and trial-context phage use.',\n        evidence:'emerging', impact:'Conceptually important; clinical use remains bespoke.',\n        settings:['Specialist centres only'] },\n      { id:'P4', name:'Novel-Agent Stewardship-by-Design', oneliner:'Build stewardship rules before release.',\n        mechanism:'Pre-launch indication fencing and sequencing rules for novel agents (e.g. cefiderocol, ceftazidime-avibactam, subscription-model products).',\n        evidence:'emerging', impact:'Governance aspiration; no outcome data yet.',\n        settings:['System-level'],\n        caveat:'Policy aspiration, not evidence-based intervention.' },\n      { id:'P5', name:'Microbiome-Preservation-Informed Prescribing', oneliner:'Choose agents with lower collateral impact.',\n        mechanism:'Select narrow-spectrum agents or novel microbiome-sparing options (e.g. ibezapolstat for CDI).',\n        evidence:'emerging', impact:'Conceptually attractive; real-world AMS effect unproven.',\n        settings:['Research'] }\n    ]\n  },\n  {\n    id: 'Q', name: 'Cross-Cutting Foundations', tag: 'Under-claimed AMS',\n    description: 'Interventions that prevent infection or enable stopping \u2014 rarely branded as AMS but among the highest-yield levers.',\n    strategies: [\n      { id:'Q1', name:'Source Control as Stewardship', oneliner:'Drain, remove, debride \u2014 the best shortener of courses.',\n        mechanism:'Timely source control (abscess drainage, line removal, device exchange, debridement) shortens required antimicrobial duration.',\n        evidence:'high', impact:'Arguably the highest-yield \"stewardship\" intervention \u2014 uncontrolled source drives unnecessary prolongation.',\n        settings:['Surgical','ICU','Complex infection'] },\n      { id:'Q2', name:'Vaccination as Stewardship', oneliner:'Prevent the infection, avoid the prescription.',\n        mechanism:'Pneumococcal, influenza, RSV, rotavirus, typhoid conjugate, HPV \u2014 all reduce antibiotic-exposed illness episodes.',\n        evidence:'high', impact:'Modelled substantial population-level antibiotic reductions; often omitted from AMS lists.',\n        settings:['All settings'] },\n      { id:'Q3', name:'IPC as Stewardship', oneliner:'CLABSI\/CAUTI\/SSI bundles reduce the denominator.',\n        mechanism:'Hand hygiene, catheter bundles, SSI bundles, isolation \u2014 prevent HAIs that drive broad-spectrum use.',\n        evidence:'high', impact:'Fewer HAIs = fewer broad-spectrum starts. IPC and AMS are complementary pillars.',\n        settings:['All hospital'] },\n      { id:'Q4', name:'Point-of-Care Testing', oneliner:'CRP POCT, strep A POCT, influenza POCT.',\n        mechanism:'Rapid POCT in primary care shifts prescribing decisions away from empirical-by-default.',\n        evidence:'high', impact:'Well-evidenced in LRTI; variable uptake.',\n        settings:['Primary care'] },\n      { id:'Q5', name:'Prophylaxis Review Cycles', oneliner:'PJP, SBP, neutropenic, splenectomy.',\n        mechanism:'Scheduled review of chronic prophylaxis regimens \u2014 stop when no longer indicated.',\n        evidence:'mod', impact:'Addresses long-duration, low-visibility prescribing.',\n        settings:['Haematology','Hepatology','Post-splenectomy'] },\n      { id:'Q6', name:'Antibiotic Amnesty \/ Disposal', oneliner:'Return unused antibiotics.',\n        mechanism:'Public campaigns and pharmacy take-back schemes for unused antimicrobials.',\n        evidence:'low', impact:'Addresses hoarding and self-prescription; modest direct effect.',\n        settings:['Community pharmacy'] },\n      { id:'Q7', name:'Supply-Chain & Procurement Stewardship', oneliner:'Central purchasing enforces formulary.',\n        mechanism:'Hospital and national procurement aligned with formulary restrictions; stockout management.',\n        evidence:'low', impact:'Critical in LMIC contexts; often overlooked.',\n        settings:['All systems, especially LMIC'] }\n    ]\n  }\n];\n\n\/\/ Flatten for search\nconst ALL_STRATEGIES = FAMILIES.flatMap(f => f.strategies.map(s => ({...s, familyId:f.id, familyName:f.name})));\n\n\/\/ ============================================================\n\/\/ RENDER ATLAS\n\/\/ ============================================================\n\nfunction renderFamilies(filter='') {\n  const grid = document.getElementById('family-grid');\n  const filtered = FAMILIES.map(f => {\n    const matching = filter\n      ? f.strategies.filter(s =>\n          s.name.toLowerCase().includes(filter.toLowerCase()) ||\n          s.oneliner.toLowerCase().includes(filter.toLowerCase()) ||\n          f.name.toLowerCase().includes(filter.toLowerCase())\n        )\n      : f.strategies;\n    return {...f, matchCount: matching.length};\n  }).filter(f => !filter || f.matchCount > 0);\n\n  grid.innerHTML = filtered.map(f => `\n    <div class=\"family-card\" data-family=\"${f.id}\">\n      <div>\n        <div class=\"family-tag\">\u00a7 ${f.tag}<\/div>\n        <div class=\"family-name\">${f.name}<\/div>\n      <\/div>\n      <div>\n        <div class=\"family-meta\"><span class=\"count\">${f.matchCount}<\/span> \/ ${f.strategies.length} strategies<\/div>\n      <\/div>\n      <div class=\"family-letter\">${f.id}<\/div>\n    <\/div>\n  `).join('');\n\n  document.querySelectorAll('.family-card').forEach(el => {\n    el.addEventListener('click', () => openFamily(el.dataset.family));\n  });\n}\n\nfunction openFamily(id) {\n  const fam = FAMILIES.find(f => f.id === id);\n  document.getElementById('atlas-home').style.display = 'none';\n  document.getElementById('subtopic-view').classList.add('active');\n\n  document.getElementById('family-letter').textContent = fam.id;\n  document.getElementById('family-name').textContent = fam.name;\n  document.getElementById('family-desc').textContent = fam.description;\n\n  const list = document.getElementById('strategy-list');\n  list.innerHTML = fam.strategies.map(s => `\n    <div class=\"strategy-card\" data-strategy=\"${s.id}\">\n      <div class=\"strategy-tag\">\u00a7 ${s.id}<\/div>\n      <div class=\"strategy-name\">${s.name}<\/div>\n      <div class=\"strategy-footer\">\n        <span><span class=\"evidence-dot evidence-${s.evidence}\"><\/span>${evidenceLabel(s.evidence)}<\/span>\n        <span>${s.settings[0] || ''}<\/span>\n      <\/div>\n    <\/div>\n  `).join('');\n\n  document.querySelectorAll('.strategy-card').forEach(el => {\n    el.addEventListener('click', () => openDetail(el.dataset.strategy));\n  });\n\n  window.scrollTo({top:0, behavior:'smooth'});\n}\n\nfunction evidenceLabel(tier) {\n  return {high:'High', mod:'Moderate', low:'Limited', emerging:'Emerging'}[tier];\n}\n\ndocument.getElementById('crumb-back').addEventListener('click', () => {\n  document.getElementById('subtopic-view').classList.remove('active');\n  document.getElementById('atlas-home').style.display = 'block';\n  window.scrollTo({top:0, behavior:'smooth'});\n});\n\n\/\/ ============================================================\n\/\/ DETAIL MODAL\n\/\/ ============================================================\n\nfunction openDetail(id) {\n  const s = ALL_STRATEGIES.find(x => x.id === id);\n  if (!s) return;\n  document.getElementById('m-tag').textContent = `\u00a7 ${s.familyName} \u00b7 ${s.id}`;\n  document.getElementById('m-title').textContent = s.name;\n  document.getElementById('m-oneliner').textContent = s.oneliner;\n  document.getElementById('m-mechanism').innerHTML = `<p>${s.mechanism}<\/p>`;\n\n  const evBadge = document.getElementById('m-evidence');\n  evBadge.textContent = evidenceLabel(s.evidence) + ' evidence';\n  evBadge.className = 'evidence-badge ' + s.evidence;\n\n  document.getElementById('m-impact').innerHTML = `<p>${s.impact}<\/p>`;\n  document.getElementById('m-settings').innerHTML = s.settings.map(set => `<span class=\"setting-pill\">${set}<\/span>`).join('');\n\n  const caveatBlock = document.getElementById('m-caveat-block');\n  if (s.caveat) {\n    caveatBlock.style.display = 'block';\n    document.getElementById('m-caveat').textContent = s.caveat;\n  } else {\n    caveatBlock.style.display = 'none';\n  }\n\n  document.getElementById('modal-backdrop').classList.add('active');\n}\n\ndocument.getElementById('modal-close').addEventListener('click', () => {\n  document.getElementById('modal-backdrop').classList.remove('active');\n});\ndocument.getElementById('modal-backdrop').addEventListener('click', (e) => {\n  if (e.target.id === 'modal-backdrop') {\n    document.getElementById('modal-backdrop').classList.remove('active');\n  }\n});\n\n\/\/ ============================================================\n\/\/ SEARCH\n\/\/ ============================================================\n\ndocument.getElementById('search-input').addEventListener('input', (e) => {\n  renderFamilies(e.target.value);\n});\n\n\/\/ ============================================================\n\/\/ TAB NAV\n\/\/ ============================================================\n\ndocument.querySelectorAll('.nav-tab').forEach(t => {\n  t.addEventListener('click', () => {\n    document.querySelectorAll('.nav-tab').forEach(x => x.classList.remove('active'));\n    t.classList.add('active');\n    const tab = t.dataset.tab;\n    document.getElementById('view-atlas').style.display = tab === 'atlas' ? 'block' : 'none';\n    document.getElementById('view-match').classList.toggle('active', tab === 'match');\n    document.getElementById('view-about').style.display = tab === 'about' ? 'block' : 'none';\n  });\n});\n\n\/\/ ============================================================\n\/\/ HOSPITAL MATCH ENGINE\n\/\/ Rule-based, transparent, auditable\n\/\/ ============================================================\n\nconst PROFILE_OPTIONS = {\n  setting: [\n    {v:'tertiary',      label:'Tertiary academic'},\n    {v:'dgh',           label:'District general'},\n    {v:'community',     label:'Community hospital'},\n    {v:'primary',       label:'Primary care'},\n    {v:'ltcf',          label:'LTCF \/ nursing home'},\n    {v:'lmic',          label:'Low-resource setting'},\n    {v:'specialist',    label:'Specialist centre'}\n  ],\n  specialty: [\n    {v:'icu',           label:'ICU-heavy'},\n    {v:'haem',          label:'Haematology\/oncology'},\n    {v:'surgical',      label:'Surgical-heavy'},\n    {v:'neonatal',      label:'Neonatal'},\n    {v:'ed',            label:'High ED volume'},\n    {v:'transplant',    label:'Transplant'},\n    {v:'elderly',       label:'Elderly care dominant'}\n  ],\n  maturity: [\n    {v:'foundation',    label:'Foundation (no AMS team)'},\n    {v:'developing',    label:'Developing (some elements)'},\n    {v:'established',   label:'Established (full team)'},\n    {v:'advanced',      label:'Advanced (digital-integrated)'}\n  ],\n  challenge: [\n    {v:'cdi',           label:'High CDI rates'},\n    {v:'cpe',           label:'CPE \/ MDR-GN pressure'},\n    {v:'mrsa',          label:'MRSA burden'},\n    {v:'bsi',           label:'Bloodstream infections'},\n    {v:'overprescribe', label:'Overall overprescribing'},\n    {v:'allergy',       label:'High penicillin-allergy labelling'},\n    {v:'discharge',     label:'Long discharge tails'},\n    {v:'asb',           label:'ASB overtreatment'}\n  ],\n  resource: [\n    {v:'ehr',           label:'Full EHR \/ CPOE'},\n    {v:'paper',         label:'Paper prescribing'},\n    {v:'id_consultant', label:'ID consultant on site'},\n    {v:'ams_pharmacist',label:'AMS pharmacist'},\n    {v:'rapid_dx',      label:'Rapid diagnostics (MALDI, PCR)'},\n    {v:'pct',           label:'PCT available'},\n    {v:'crp_poct',      label:'CRP POCT'},\n    {v:'dashboard',     label:'AMS dashboard'}\n  ]\n};\n\nfunction renderOptions() {\n  Object.entries(PROFILE_OPTIONS).forEach(([key, opts]) => {\n    const container = document.getElementById('opt-' + key);\n    container.innerHTML = opts.map(o => `\n      <button class=\"option-chip\" data-group=\"${key}\" data-value=\"${o.v}\">${o.label}<\/button>\n    `).join('');\n  });\n\n  document.querySelectorAll('.option-chip').forEach(c => {\n    c.addEventListener('click', () => {\n      const group = c.dataset.group;\n      \/\/ maturity is single-select\n      if (group === 'maturity') {\n        document.querySelectorAll(`[data-group=\"maturity\"]`).forEach(x => x.classList.remove('selected'));\n      }\n      c.classList.toggle('selected');\n    });\n  });\n}\nrenderOptions();\n\nfunction collectProfile() {\n  const profile = {};\n  Object.keys(PROFILE_OPTIONS).forEach(k => {\n    profile[k] = [...document.querySelectorAll(`[data-group=\"${k}\"].selected`)].map(e => e.dataset.value);\n  });\n  profile.freetext = document.getElementById('free-context').value.toLowerCase();\n  return profile;\n}\n\n\/\/ Scoring rules: each strategy gets scored against profile\n\/\/ Returns {score, reasons:[]}\nfunction scoreStrategy(s, p) {\n  let score = 50; \/\/ baseline\n  const reasons = [];\n\n  const has = (group, val) => p[group] && p[group].includes(val);\n  const text = p.freetext;\n\n  \/\/ === BOOST by setting ===\n  if (has('setting','primary')) {\n    if (['D2','E3','H1','H2','H3','H4','H5','H6','K7','K9','Q4'].includes(s.id)) { score += 30; reasons.push('Primary-care priority'); }\n    if (['B1','A11','C1'].includes(s.id)) { score -= 25; reasons.push('Less applicable in primary care'); }\n  }\n  if (has('setting','tertiary') || has('setting','specialist')) {\n    if (['B1','A9','C1','L1','J3','J4','K1','P3','P4'].includes(s.id)) { score += 25; reasons.push('Fits tertiary\/complex service'); }\n  }\n  if (has('setting','dgh')) {\n    if (['A1','A2','A5','A6','A7','F3','F6','I1','I3'].includes(s.id)) { score += 20; reasons.push('High-yield DGH intervention'); }\n  }\n  if (has('setting','ltcf')) {\n    if (['E1','K5','H5','O2','Q5'].includes(s.id)) { score += 35; reasons.push('LTCF priority'); }\n    if (['A9','C1','B1','K1'].includes(s.id)) { score -= 30; reasons.push('Low LTCF relevance'); }\n  }\n  if (has('setting','lmic')) {\n    if (['K10','O1','O2','M4','Q7','N2','F1','F3'].includes(s.id)) { score += 30; reasons.push('LMIC-suitable'); }\n    if (['C1','G1','G2','P1','P2','A9'].includes(s.id)) { score -= 25; reasons.push('Resource-dependent \u2014 low LMIC feasibility'); }\n  }\n\n  \/\/ === BOOST by specialty mix ===\n  if (has('specialty','icu')) {\n    if (['A8','A9','D1','K1','C1','C2','Q1'].includes(s.id)) { score += 25; reasons.push('ICU-critical'); }\n  }\n  if (has('specialty','haem')) {\n    if (['L1','L2','A9','Q5'].includes(s.id)) { score += 30; reasons.push('Haematology-critical (AFS, TDM)'); }\n  }\n  if (has('specialty','surgical')) {\n    if (['A11','K3','J5','Q1','Q3'].includes(s.id)) { score += 25; reasons.push('Surgical priority'); }\n  }\n  if (has('specialty','neonatal')) {\n    if (['C8','K4'].includes(s.id)) { score += 35; reasons.push('Neonatal priority'); }\n  }\n  if (has('specialty','ed')) {\n    if (['K2','H4','C7','Q4','A10'].includes(s.id)) { score += 20; reasons.push('ED priority'); }\n  }\n  if (has('specialty','transplant')) {\n    if (['L1','L2','A9'].includes(s.id)) { score += 25; reasons.push('Transplant-relevant'); }\n  }\n  if (has('specialty','elderly')) {\n    if (['E1','K5','I1','I2'].includes(s.id)) { score += 25; reasons.push('Elderly-care priority'); }\n  }\n\n  \/\/ === MATURITY gating ===\n  if (has('maturity','foundation')) {\n    if (['M1','M2','O1','F3','A1','A6','E1'].includes(s.id)) { score += 30; reasons.push('Foundation-stage priority'); }\n    if (['P1','P2','G8','B3','C9'].includes(s.id)) { score -= 35; reasons.push('Requires higher AMS maturity'); }\n  }\n  if (has('maturity','developing')) {\n    if (['A3','A4','A5','A6','B1','F1','F6','G6','H1','H4'].includes(s.id)) { score += 20; reasons.push('Fits developing programme'); }\n    if (['P1','P2','C9'].includes(s.id)) { score -= 20; reasons.push('Too early-stage for current maturity'); }\n  }\n  if (has('maturity','advanced')) {\n    if (['G1','G2','G3','G4','G7','P1','P2','F8','C1'].includes(s.id)) { score += 25; reasons.push('Leverages advanced infrastructure'); }\n  }\n\n  \/\/ === CHALLENGE matching ===\n  if (has('challenge','cdi')) {\n    if (['A5','A6','C5','E1','P5','Q5'].includes(s.id)) { score += 25; reasons.push('Targets CDI driver'); }\n  }\n  if (has('challenge','cpe')) {\n    if (['B4','F4','F5','F8','M6','N2'].includes(s.id)) { score += 25; reasons.push('CPE-focused'); }\n  }\n  if (has('challenge','mrsa')) {\n    if (['C7','J1','J3','J5'].includes(s.id)) { score += 25; reasons.push('Reduces MRSA-driver exposures'); }\n  }\n  if (has('challenge','bsi')) {\n    if (['C1','C6','F9','Q1'].includes(s.id)) { score += 25; reasons.push('BSI-focused'); }\n  }\n  if (has('challenge','overprescribe')) {\n    if (['A6','H2','H1','H3','G4','D2'].includes(s.id)) { score += 25; reasons.push('Addresses overall overprescribing'); }\n  }\n  if (has('challenge','allergy')) {\n    if (['J1','J2','J3','J4','J5'].includes(s.id)) { score += 35; reasons.push('Allergy de-labelling priority'); }\n  }\n  if (has('challenge','discharge')) {\n    if (['I1','I2','I3','I4','I5'].includes(s.id)) { score += 30; reasons.push('Targets discharge tail'); }\n  }\n  if (has('challenge','asb')) {\n    if (['C3','E1','K5'].includes(s.id)) { score += 35; reasons.push('ASB-targeted'); }\n  }\n\n  \/\/ === RESOURCE gating ===\n  if (has('resource','paper') && !has('resource','ehr')) {\n    if (['G1','G2','G3','G4','G5','G6','G7','F8'].includes(s.id)) { score -= 40; reasons.push('Needs EHR \u2014 unavailable'); }\n    if (['F3','O1','H3','H4'].includes(s.id)) { score += 10; reasons.push('Paper-compatible'); }\n  }\n  if (has('resource','ehr')) {\n    if (['G1','G2','G3','G4','G5','G6','G7','F8'].includes(s.id)) { score += 15; reasons.push('EHR-enabled'); }\n  }\n  if (!has('resource','rapid_dx')) {\n    if (['C1','C7'].includes(s.id)) { score -= 25; reasons.push('Requires rapid diagnostics'); }\n  } else {\n    if (['C1','C7'].includes(s.id)) { score += 20; reasons.push('Rapid-dx enabled'); }\n  }\n  if (!has('resource','pct')) {\n    if (['D1'].includes(s.id)) { score -= 30; reasons.push('PCT unavailable'); }\n  } else {\n    if (['D1'].includes(s.id)) { score += 25; reasons.push('PCT-enabled'); }\n  }\n  if (!has('resource','crp_poct')) {\n    if (['D2'].includes(s.id)) { score -= 15; reasons.push('CRP POCT unavailable (primary care)'); }\n  }\n  if (!has('resource','ams_pharmacist') && !has('resource','id_consultant')) {\n    if (['A3','A4','B1','L1'].includes(s.id)) { score -= 20; reasons.push('Requires AMS\/ID workforce'); }\n  }\n  if (has('resource','dashboard')) {\n    if (['G7','G8','M4','M7'].includes(s.id)) { score += 15; reasons.push('Dashboard available'); }\n  }\n\n  \/\/ === FREE TEXT fuzzy matches ===\n  if (text) {\n    if (text.includes('surg') && ['A11','K3','Q1'].includes(s.id)) { score += 15; reasons.push('Mentioned surgical context'); }\n    if (text.includes('fung') && ['L1'].includes(s.id)) { score += 20; reasons.push('Mentioned fungal'); }\n    if (text.includes('neonat') && ['C8','K4'].includes(s.id)) { score += 20; reasons.push('Mentioned neonatal'); }\n    if ((text.includes('rural') || text.includes('remote') || text.includes('low resource')) && ['K10','Q7'].includes(s.id)) { score += 20; reasons.push('Resource-limited context'); }\n    if (text.includes('dental') && ['K8'].includes(s.id)) { score += 25; reasons.push('Mentioned dental'); }\n    if ((text.includes('pharmacy') || text.includes('pharmacy first')) && ['K9'].includes(s.id)) { score += 20; reasons.push('Pharmacy-led model'); }\n    if ((text.includes('sepsis')) && ['A5','A10','D1','Q1'].includes(s.id)) { score += 15; reasons.push('Sepsis-relevant'); }\n  }\n\n  \/\/ === FOUNDATIONAL always score high unless contraindicated ===\n  if (['M1','M2'].includes(s.id) && !has('maturity','advanced') && !has('maturity','established')) {\n    score += 10; reasons.push('Programmatic foundation');\n  }\n\n  \/\/ Clamp and dedupe\n  score = Math.max(0, Math.min(100, score));\n  const uniqueReasons = [...new Set(reasons)];\n  return {score, reasons: uniqueReasons};\n}\n\nfunction assignGrade(score) {\n  if (score >= 80) return 'A';\n  if (score >= 65) return 'B';\n  if (score >= 50) return 'C';\n  return null; \/\/ excluded\n}\n\ndocument.getElementById('analyze-btn').addEventListener('click', () => {\n  const profile = collectProfile();\n\n  const scored = ALL_STRATEGIES.map(s => {\n    const {score, reasons} = scoreStrategy(s, profile);\n    return {...s, score, reasons, grade: assignGrade(score)};\n  }).filter(x => x.grade !== null)\n    .sort((a,b) => b.score - a.score);\n\n  const byGrade = {A:[], B:[], C:[]};\n  scored.forEach(x => byGrade[x.grade].push(x));\n\n  const results = document.getElementById('results-section');\n  const list = document.getElementById('results-list');\n  results.classList.add('active');\n\n  const profileSummary = [];\n  if (profile.setting.length) profileSummary.push(profile.setting.map(v => PROFILE_OPTIONS.setting.find(o=>o.v===v).label).join(' + '));\n  if (profile.maturity.length) profileSummary.push(PROFILE_OPTIONS.maturity.find(o=>o.v===profile.maturity[0])?.label);\n  document.getElementById('results-sub').textContent = profileSummary.join(' \u00b7 ') || 'Unspecified profile';\n\n  let html = '';\n  [\n    {grade:'A', label:'Priority \u2014 high fit, high impact', klass:'a'},\n    {grade:'B', label:'High value \u2014 consider implementing next', klass:'b'},\n    {grade:'C', label:'Worth considering \u2014 context-dependent', klass:'c'}\n  ].forEach(({grade, label, klass}) => {\n    const items = byGrade[grade];\n    if (!items.length) return;\n    html += `\n      <div class=\"grade-section\">\n        <div class=\"grade-header ${klass}\">\n          <span>Grade ${grade} \u2014 ${label}<\/span>\n          <span class=\"grade-count\">${items.length} strategies<\/span>\n        <\/div>\n        ${items.map(x => `\n          <div class=\"match-card\" data-strategy=\"${x.id}\">\n            <div class=\"match-score\">${x.score}<\/div>\n            <div class=\"match-info\">\n              <div class=\"match-name\">${x.name}<\/div>\n              <div class=\"match-reason\">${x.reasons.slice(0,3).join(' \u00b7 ') || 'Baseline fit'}<\/div>\n            <\/div>\n            <div class=\"match-meta\">${x.familyId} \u00b7 ${evidenceLabel(x.evidence)}<\/div>\n          <\/div>\n        `).join('')}\n      <\/div>`;\n  });\n\n  if (!html) html = '<p style=\"font-family:Fraunces,serif; font-style:italic; color:var(--slate);\">No strategies matched \u2014 try selecting at least a setting and maturity level.<\/p>';\n\n  list.innerHTML = html;\n  document.querySelectorAll('#results-list .match-card').forEach(el => {\n    el.addEventListener('click', () => openDetail(el.dataset.strategy));\n  });\n\n  \/\/ Trigger LLM narrative for top strategies\n  generateNarrative(profile, byGrade.A.slice(0, 8), byGrade.B.slice(0, 4));\n\n  results.scrollIntoView({behavior:'smooth', block:'start'});\n});\n\n\/\/ ============================================================\n\/\/ LLM NARRATIVE LAYER\n\/\/ ============================================================\n\nasync function generateNarrative(profile, topA, topB) {\n  const panel = document.getElementById('narrative-content');\n  panel.innerHTML = '<div class=\"narrative-loading\">Generating contextual narrative<\/div>';\n\n  \/\/ Build a compact profile description\n  const labelFor = (group, val) => {\n    const opt = PROFILE_OPTIONS[group]?.find(o => o.v === val);\n    return opt ? opt.label : val;\n  };\n  const describe = (group) => profile[group].map(v => labelFor(group, v)).join(', ') || 'not specified';\n\n  const profileText = `\nSetting: ${describe('setting')}\nSpecialty mix: ${describe('specialty')}\nAMS maturity: ${describe('maturity')}\nKnown challenges: ${describe('challenge')}\nResources: ${describe('resource')}\nAdditional context: ${profile.freetext || 'none'}\n`.trim();\n\n  const topStrategiesText = [\n    ...topA.map(s => `[A\/${s.score}] ${s.name} (${s.familyName}) \u2014 ${s.oneliner}`),\n    ...topB.map(s => `[B\/${s.score}] ${s.name} (${s.familyName}) \u2014 ${s.oneliner}`)\n  ].join('\\n');\n\n  const prompt = `You are writing a short contextual narrative for an antimicrobial stewardship (AMS) educational dashboard. A rule-based engine has already scored and graded strategies against a hospital profile. Your job is to write a brief, specific narrative (150-220 words, 2-3 short paragraphs) explaining WHY the top-ranked strategies fit this particular setting, and what sequencing or dependencies matter.\n\nHospital profile:\n${profileText}\n\nTop-ranked strategies (already scored by the rule engine):\n${topStrategiesText}\n\nRequirements:\n- Be specific to the profile above, not generic\n- Identify 2-3 themes connecting the top strategies\n- Mention dependencies or sequencing where relevant (e.g. \"M2 must precede G-family interventions because...\")\n- If the profile reveals a specific risk or gap, name it\n- Use British English\n- Use <strong> tags (not markdown) for emphasis on strategy names or key concepts\n- Wrap paragraphs in <p> tags\n- Do not repeat the strategy list verbatim\n- Do not add disclaimers \u2014 they are handled elsewhere\n- Do not use bullet points or headers\n\nOutput the narrative HTML only, nothing else.`;\n\n  try {\n    const response = await fetch(\"https:\/\/api.anthropic.com\/v1\/messages\", {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"application\/json\" },\n      body: JSON.stringify({\n        model: \"claude-sonnet-4-20250514\",\n        max_tokens: 1000,\n        messages: [{ role: \"user\", content: prompt }]\n      })\n    });\n\n    if (!response.ok) throw new Error(`API returned ${response.status}`);\n    const data = await response.json();\n\n    const text = data.content\n      .filter(item => item.type === \"text\")\n      .map(item => item.text)\n      .join(\"\\n\")\n      .trim();\n\n    if (!text) throw new Error(\"Empty response\");\n\n    \/\/ Clean any stray markdown fences\n    const clean = text.replace(\/```html|```\/g, \"\").trim();\n    panel.innerHTML = clean;\n  } catch (err) {\n    panel.innerHTML = `<div class=\"narrative-error\">Narrative generation unavailable (${err.message}). Rule-based scores above are unaffected. Review them with an AMS expert.<\/div>`;\n  }\n}\n\n\/\/ ============================================================\n\/\/ INITIAL RENDER\n\/\/ ============================================================\n\nrenderFamilies();\n\n<\/script>\n<\/body>\n<\/html>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How many AMS strategies do you know? Here are > 100 strategies from 17 families. Also, list the nature of your hospital and find out the strategies that best fit your set-up. It is an educational-experimental tool. Always discuss with your AMS expert. AMS Strategy Atlas \u2014 Interactive Learning Dashboard Educational tool only. All recommendations&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[9],"tags":[],"class_list":["post-1220","post","type-post","status-publish","format-standard","hentry","category-antibiotic"],"_links":{"self":[{"href":"https:\/\/microregistrar.com\/index.php?rest_route=\/wp\/v2\/posts\/1220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/microregistrar.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/microregistrar.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/microregistrar.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/microregistrar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1220"}],"version-history":[{"count":5,"href":"https:\/\/microregistrar.com\/index.php?rest_route=\/wp\/v2\/posts\/1220\/revisions"}],"predecessor-version":[{"id":1225,"href":"https:\/\/microregistrar.com\/index.php?rest_route=\/wp\/v2\/posts\/1220\/revisions\/1225"}],"wp:attachment":[{"href":"https:\/\/microregistrar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/microregistrar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/microregistrar.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}