2:I[7012,["4765","static/chunks/4765-f5afdf8061f456f3.js","9856","static/chunks/9856-3b185291364d9bef.js","6687","static/chunks/app/docs/%5B...slug%5D/page-e07536548216bee4.js"],"MarkdownRenderer"] 4:I[9856,["4765","static/chunks/4765-f5afdf8061f456f3.js","9856","static/chunks/9856-3b185291364d9bef.js","6687","static/chunks/app/docs/%5B...slug%5D/page-e07536548216bee4.js"],""] 5:I[4126,[],""] 7:I[9630,[],""] 8:I[4278,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"HeadingProvider"] 9:I[1476,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"Header"] a:I[3167,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"Sidebar"] b:I[7409,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"PageFrame"] 3:T1325, # Post-Launch Monitoring Guide ## Overview This guide covers monitoring procedures for the VoiceAssist Voice Mode enhancement (Phases 1-10 + Epic FHIR Phase 6b/7) following the December 2025 launch. --- ## Daily Monitoring Checklist ### 1. Service Health ```bash # Check all service endpoints curl http://localhost:5057/health curl http://localhost:5057/health/epic curl http://localhost:5057/api/admin/provider-status # Check circuit breaker state curl http://localhost:5057/api/admin/epic/status | jq '.circuit_breaker.state' ``` **Expected Values:** - Health: `{"status": "healthy"}` - Epic Health: `{"status": "healthy", "fallback_active": false}` - Circuit State: `"closed"` ### 2. FHIR Write Operations ```bash # Check write operation metrics curl http://localhost:5057/api/admin/metrics/epic | jq '{ write_requests: .write_requests, write_success_rate: .write_success_rate, avg_write_latency_ms: .avg_write_latency_ms }' ``` **Alert Thresholds:** | Metric | Warning | Critical | |--------|---------|----------| | Write Success Rate | < 99% | < 95% | | Avg Write Latency | > 1000ms | > 2000ms | | Failed Writes (24h) | > 5 | > 20 | ### 3. Audit Log Verification ```bash # Check recent EHR write events curl "http://localhost:5057/api/admin/audit/events?event_type_prefix=ehr.&limit=10" # Verify no write failures in last hour curl "http://localhost:5057/api/admin/audit/events?event_type=ehr.write_failed&since=1h" | jq '.count' ``` ### 4. Voice Pipeline Health ```bash # Check emotion detection service curl http://localhost:5057/health/emotion # Check backchannel service curl http://localhost:5057/health/backchannel # Check active voice sessions curl http://localhost:5057/api/admin/voice/sessions | jq '.active_count' ``` --- ## Weekly Review Tasks ### 1. Performance Analysis - Review P95/P99 latency trends in Grafana - Check for latency degradation patterns - Analyze voice session duration and quality metrics ### 2. Chaos Engineering Verification ```python # Run weekly chaos experiment (non-production only) from app.testing import get_chaos_controller, create_network_degradation_experiment chaos = get_chaos_controller() if os.getenv("ENVIRONMENT") != "production": experiment = create_network_degradation_experiment(duration_seconds=300) results = await chaos.run_experiment(experiment.id) print(f"Chaos test results: {results}") ``` ### 3. Audit Log Review - Export weekly audit summary - Review any EHR conflict detections - Verify accounting of disclosures is generating correctly --- ## Alert Response Procedures ### Circuit Breaker OPEN 1. Check Epic status page for known outages 2. Review recent error logs: `grep "epic" /var/log/voiceassist/api.log | tail -100` 3. If Epic is healthy, investigate connection issues 4. Wait for automatic recovery (60s timeout) or manual reset ### High Write Failure Rate 1. Check audit logs for failure patterns 2. Review FHIR resource validation errors 3. Check credential expiration 4. Escalate if >10 failures in 1 hour ### Voice Pipeline Degradation 1. Check Deepgram/Hume AI service status 2. Review emotion detection latency 3. Check for memory pressure on voice sessions 4. Restart affected services if needed --- ## Feedback Collection ### User Feedback Endpoints ```bash # Submit feedback (from frontend) POST /api/feedback { "session_id": "...", "rating": 4, "category": "voice_quality", "comments": "..." } # Get feedback summary GET /api/admin/feedback/summary?days=7 ``` ### Metrics to Track | Category | Metric | Target | | ------------------ | ---------------------- | --------- | | Voice Quality | User rating | > 4.0/5.0 | | EHR Integration | Order success rate | > 99% | | Dictation | Transcription accuracy | > 95% | | Emotion Detection | Detection confidence | > 0.7 | | Clinical Reasoning | Suggestion acceptance | > 60% | ### Weekly Feedback Review 1. Export feedback data: `GET /api/admin/feedback/export?format=csv&days=7` 2. Categorize by feature area 3. Identify patterns and recurring issues 4. Prioritize improvements for next sprint --- ## Escalation Contacts | Issue Type | Primary Contact | Escalation | | ---------------- | ----------------------- | ------------------------- | | Epic FHIR Issues | oncall@voiceassist.io | epic-support@example.com | | Voice Pipeline | oncall@voiceassist.io | ai-team@voiceassist.io | | Security/PHI | security@voiceassist.io | compliance@voiceassist.io | | Infrastructure | oncall@voiceassist.io | infra-team@voiceassist.io | --- ## Related Documentation - [Epic FHIR Runbook](epic-fhir-runbook.md) - [Voice Mode Enhancement](../VOICE_MODE_ENHANCEMENT_10_PHASE.md) - [Chaos Engineering Guide](../CHAOS_ENGINEERING.md) - [Operations Overview](./OPERATIONS_OVERVIEW.md) 6:["slug","operations/POST_LAUNCH_MONITORING","c"] 0:["X7oMT3VrOffzp0qvbeOas",[[["",{"children":["docs",{"children":[["slug","operations/POST_LAUNCH_MONITORING","c"],{"children":["__PAGE__?{\"slug\":[\"operations\",\"POST_LAUNCH_MONITORING\"]}",{}]}]}]},"$undefined","$undefined",true],["",{"children":["docs",{"children":[["slug","operations/POST_LAUNCH_MONITORING","c"],{"children":["__PAGE__",{},[["$L1",["$","div",null,{"children":[["$","div",null,{"className":"mb-6 flex items-center justify-between gap-4","children":[["$","div",null,{"children":[["$","p",null,{"className":"text-sm text-gray-500 dark:text-gray-400","children":"Docs / Raw"}],["$","h1",null,{"className":"text-3xl font-bold text-gray-900 dark:text-white","children":"Post-Launch Monitoring Guide"}],["$","p",null,{"className":"text-sm text-gray-600 dark:text-gray-400","children":["Sourced from"," ",["$","code",null,{"className":"font-mono text-xs","children":["docs/","operations/POST_LAUNCH_MONITORING.md"]}]]}]]}],["$","a",null,{"href":"https://github.com/mohammednazmy/VoiceAssist/edit/main/docs/operations/POST_LAUNCH_MONITORING.md","target":"_blank","rel":"noreferrer","className":"inline-flex items-center gap-2 rounded-md border border-gray-200 dark:border-gray-700 px-3 py-1.5 text-sm text-gray-700 dark:text-gray-200 hover:border-primary-500 dark:hover:border-primary-400 hover:text-primary-700 dark:hover:text-primary-300","children":"Edit on GitHub"}]]}],["$","div",null,{"className":"rounded-lg border border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-900 p-6","children":["$","$L2",null,{"content":"$3"}]}],["$","div",null,{"className":"mt-6 flex flex-wrap gap-2 text-sm","children":[["$","$L4",null,{"href":"/reference/all-docs","className":"inline-flex items-center gap-1 rounded-md bg-gray-100 px-3 py-1 text-gray-700 hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700","children":"← All documentation"}],["$","$L4",null,{"href":"/","className":"inline-flex items-center gap-1 rounded-md bg-gray-100 px-3 py-1 text-gray-700 hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700","children":"Home"}]]}]]}],null],null],null]},[null,["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children","docs","children","$6","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children","docs","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/7f586cdbbaa33ff7.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","className":"h-full","children":["$","body",null,{"className":"__className_f367f3 h-full bg-white dark:bg-gray-900","children":[["$","a",null,{"href":"#main-content","className":"skip-to-content","children":"Skip to main content"}],["$","$L8",null,{"children":[["$","$L9",null,{}],["$","$La",null,{}],["$","main",null,{"id":"main-content","className":"lg:pl-64","role":"main","aria-label":"Documentation content","children":["$","$Lb",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]]}]]}]}]],null],null],["$Lc",null]]]] c:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Post-Launch Monitoring Guide | Docs | VoiceAssist Docs"}],["$","meta","3",{"name":"description","content":"Monitoring checklist and procedures for the VoiceAssist Voice Mode enhancement launch, including Epic FHIR integration monitoring."}],["$","meta","4",{"name":"keywords","content":"VoiceAssist,documentation,medical AI,voice assistant,healthcare,HIPAA,API"}],["$","meta","5",{"name":"robots","content":"index, follow"}],["$","meta","6",{"name":"googlebot","content":"index, follow"}],["$","link","7",{"rel":"canonical","href":"https://assistdocs.asimo.io"}],["$","meta","8",{"property":"og:title","content":"VoiceAssist Documentation"}],["$","meta","9",{"property":"og:description","content":"Comprehensive documentation for VoiceAssist - Enterprise Medical AI Assistant"}],["$","meta","10",{"property":"og:url","content":"https://assistdocs.asimo.io"}],["$","meta","11",{"property":"og:site_name","content":"VoiceAssist Docs"}],["$","meta","12",{"property":"og:type","content":"website"}],["$","meta","13",{"name":"twitter:card","content":"summary"}],["$","meta","14",{"name":"twitter:title","content":"VoiceAssist Documentation"}],["$","meta","15",{"name":"twitter:description","content":"Comprehensive documentation for VoiceAssist - Enterprise Medical AI Assistant"}],["$","meta","16",{"name":"next-size-adjust"}]] 1:null