stemedb/scripts/demo-consumer-health.sh
jordan bbe6aedc40 feat: Aphoria security extractors + LLM evaluation architecture + ontology docs
New security extractors:
- insecure_deserialization, orm_injection, path_traversal, security_headers
- ssrf, unvalidated_redirects, weak_password, xxe
- Enhanced tls_version extractor with comprehensive cipher/protocol checks

Architecture docs:
- Scout-judge extraction pattern for LLM-based code analysis
- LLM prompt evaluation framework
- LLM eval implementation guide

Core improvements:
- stemedb-ontology README and client enhancements
- WAL journal/segment instrumentation
- Signing and ingestion refinements
- Consumer health demo script

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 15:22:55 -07:00

240 lines
8.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Consumer Health Demo Script
# Demonstrates StemeDB + stemedb-ontology for the Consumer Health use case
#
# Prerequisites:
# - StemeDB API running: cargo run -p stemedb-api
# - steme-pharma built: cargo build -p stemedb-ontology
#
# Usage:
# ./scripts/demo-consumer-health.sh
set -e
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
BOLD='\033[1m'
NC='\033[0m' # No Color
# Configuration
STEMEDB_URL="${STEMEDB_URL:-http://localhost:18180}"
PHARMA_CLI="./target/release/steme-pharma"
PAUSE_SECONDS=2
# Helper functions
print_header() {
echo -e "\n${BOLD}${BLUE}════════════════════════════════════════════════════════════════${NC}"
echo -e "${BOLD}${BLUE} $1${NC}"
echo -e "${BOLD}${BLUE}════════════════════════════════════════════════════════════════${NC}\n"
}
print_step() {
echo -e "${CYAN}$1${NC}"
}
print_success() {
echo -e "${GREEN}$1${NC}"
}
print_warning() {
echo -e "${YELLOW}$1${NC}"
}
print_error() {
echo -e "${RED}$1${NC}"
}
wait_for_user() {
if [ -t 0 ]; then
echo -e "\n${YELLOW}Press Enter to continue...${NC}"
read -r
else
sleep $PAUSE_SECONDS
fi
}
# Check prerequisites
print_header "Consumer Health Demo - Prerequisites Check"
# Check if steme-pharma exists
if [ ! -f "$PHARMA_CLI" ]; then
print_warning "steme-pharma not found at $PHARMA_CLI"
print_step "Building steme-pharma..."
cargo build --release -p stemedb-ontology
fi
# Check if StemeDB is running
print_step "Checking StemeDB connection..."
if curl -s "${STEMEDB_URL}/v1/health" > /dev/null 2>&1; then
print_success "StemeDB is running at $STEMEDB_URL"
else
print_error "StemeDB not reachable at $STEMEDB_URL"
echo -e "\nStart StemeDB with:"
echo -e " ${CYAN}cargo run -p stemedb-api${NC}"
exit 1
fi
# ============================================================================
# STEP 1: Ingest FDA Data + Mock Conflicts
# ============================================================================
print_header "Step 1: Ingest FDA Data + Mock Conflicts"
print_step "Ingesting FDA label data for Semaglutide and Tirzepatide..."
print_step "Adding mock conflicts (simulating social media contradictions)..."
echo ""
$PHARMA_CLI --stemedb-url "$STEMEDB_URL" ingest "semaglutide,tirzepatide" --with-conflicts
print_success "Data ingested with mock conflicts"
wait_for_user
# ============================================================================
# STEP 2: Conflict Detection (Skeptic Lens)
# ============================================================================
print_header "Step 2: Conflict Detection (Skeptic Lens)"
echo -e "${BOLD}Question:${NC} What do different sources say about Semaglutide's nausea rate?"
echo -e "${BOLD}Lens:${NC} Skeptic (shows all claims, highlights disagreements)\n"
print_step "Querying nausea_rate with Skeptic lens..."
echo ""
$PHARMA_CLI --stemedb-url "$STEMEDB_URL" query "Semaglutide" "nausea_rate" --mode skeptic
echo -e "\n${YELLOW}Note:${NC} The conflict score indicates disagreement between sources."
echo -e "FDA (Regulatory tier) reports clinical trial data."
echo -e "Reddit (Anecdotal tier) reports user experiences."
wait_for_user
# ============================================================================
# STEP 3: Source Hierarchy (Layered Consensus)
# ============================================================================
print_header "Step 3: Source Hierarchy (Layered Consensus)"
echo -e "${BOLD}Question:${NC} What's the consensus on HbA1c reduction, broken down by source tier?"
echo -e "${BOLD}Lens:${NC} LayeredConsensus (shows per-tier agreement)\n"
print_step "Querying hba1c_reduction_percent with Layered Consensus..."
echo ""
$PHARMA_CLI --stemedb-url "$STEMEDB_URL" query "Semaglutide:Type2Diabetes" "hba1c_reduction_percent" --mode layered
echo -e "\n${YELLOW}Note:${NC} Each tier shows its own consensus."
echo -e "Higher tiers (Regulatory, Clinical) have more weight in final resolution."
wait_for_user
# ============================================================================
# STEP 4: Drug Comparison
# ============================================================================
print_header "Step 4: Drug Comparison"
echo -e "${BOLD}Question:${NC} How do Semaglutide and Tirzepatide compare on weight loss?"
echo -e "${BOLD}Method:${NC} Side-by-side query of both subjects\n"
print_step "Comparing weight_loss_percent..."
echo ""
$PHARMA_CLI --stemedb-url "$STEMEDB_URL" compare \
"Semaglutide:Type2Diabetes" \
"Tirzepatide:Type2Diabetes" \
--predicate "weight_loss_percent"
echo -e "\n${YELLOW}Note:${NC} Both drugs' claims are shown with conflict scores."
echo -e "A consumer can see both FDA data and community reports."
wait_for_user
# ============================================================================
# STEP 5: Explore Available Data
# ============================================================================
print_header "Step 5: Explore Available Data"
echo -e "${BOLD}Question:${NC} What predicates are available for Semaglutide?"
echo -e "${BOLD}Method:${NC} List all predicates with assertions for this subject\n"
print_step "Exploring Semaglutide predicates..."
echo ""
$PHARMA_CLI --stemedb-url "$STEMEDB_URL" explore "Semaglutide:Type2Diabetes"
echo ""
print_step "Exploring Semaglutide safety predicates..."
echo ""
$PHARMA_CLI --stemedb-url "$STEMEDB_URL" explore "Semaglutide"
echo -e "\n${YELLOW}Note:${NC} Efficacy predicates use Drug:Indication subjects."
echo -e "Safety predicates use Drug-only subjects (apply across indications)."
wait_for_user
# ============================================================================
# STEP 6: JSON Output (for Integration)
# ============================================================================
print_header "Step 6: JSON Output (for Integration)"
echo -e "${BOLD}Use Case:${NC} Programmatic access for AI agents or web apps"
echo -e "${BOLD}Format:${NC} JSON output for parsing\n"
print_step "Getting JSON response..."
echo ""
$PHARMA_CLI --stemedb-url "$STEMEDB_URL" --format json query "Semaglutide" "nausea_rate" | head -50
echo -e "\n... (truncated for demo)"
wait_for_user
# ============================================================================
# Summary
# ============================================================================
print_header "Demo Summary"
echo -e "${GREEN}${BOLD}What We Demonstrated:${NC}\n"
echo -e " 1. ${CYAN}Data Ingestion${NC}"
echo -e " - FDA label extraction (Regulatory tier)"
echo -e " - Mock social media conflicts (Anecdotal tier)"
echo ""
echo -e " 2. ${CYAN}Conflict Detection${NC}"
echo -e " - Skeptic lens shows ALL claims"
echo -e " - Conflict score quantifies disagreement"
echo ""
echo -e " 3. ${CYAN}Source Hierarchy${NC}"
echo -e " - LayeredConsensus groups by authority tier"
echo -e " - FDA data weighted higher than Reddit"
echo ""
echo -e " 4. ${CYAN}Drug Comparison${NC}"
echo -e " - Side-by-side view of multiple subjects"
echo -e " - Each drug's claims with provenance"
echo ""
echo -e " 5. ${CYAN}Data Exploration${NC}"
echo -e " - Discover available predicates"
echo -e " - Different subject patterns for efficacy vs safety"
echo ""
echo -e " 6. ${CYAN}API Integration${NC}"
echo -e " - JSON output for programmatic access"
echo -e " - Ready for AI agents and web apps"
echo ""
echo -e "${BOLD}Consumer Health Value Proposition:${NC}"
echo -e " - ${GREEN}See all perspectives${NC}, not just the loudest"
echo -e " - ${GREEN}Understand source authority${NC} (FDA vs. Reddit)"
echo -e " - ${GREEN}Make informed decisions${NC} with conflict awareness"
echo ""
echo -e "${BOLD}Next Steps:${NC}"
echo -e " - Run Consumer Health UAT: ${CYAN}cargo test -p stemedb-ontology --test consumer_health_uat${NC}"
echo -e " - Read the guide: ${CYAN}docs/app-concepts/consumer-health.md${NC}"
echo -e " - Try the Go SDK: ${CYAN}sdk/go/steme/${NC}"
echo ""
print_success "Demo complete!"