Giter Club home page Giter Club logo

covid-vaccine-bot's Introduction

CI

COVID-19 Vaccine Eligibility HealthBot

This project contains Azure HealthBot template files to enable a nationwide COVID vaccine eligibility bot. The bot asks for information about a person's location, and then uses that to determine jurisdiction (state, county, city) and apply the current eligibility rules and phase of that jurisdiction to help the user understand whether they are eligible for the vaccine.

covid-vaccine-bot's People

Contributors

batch08 avatar darthtrevino avatar devan-huapaya avatar dworthen avatar jessimurray avatar matterhart avatar microsoftopensource avatar natoverse avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

covid-vaccine-bot's Issues

Improve Preamble Information in Workflow

We should have a legally approved blub at the beginning of the workflow. This blurb should contain a link where users can provide feedback to us on how valid the rules are or where there are issues in the system. Our original thought was to use GitHub, but the technical bar for submitting GH issues may be high for most users. Perhaps this should be an email alias?

  • Email Feedback POC
  • CYA Text

Pregistration/Text Updates

If we can determine when users are eligible, we can send them notifications when they become eligible. (This assumes workflows don't change) .

As an easier variant, we can send notifications to users when qualifications for states change. This will require some tracking of user info (submitted email, phone number, state, qualification questions, etc..)

Determine which tribal areas manage their own COVID response and should be modeled at the State level (e.g. Navajo Nation)

Cross-State Tribal Lands

Navajo Nation (overlaps AZ, NM, UT): Phase Info & Registry (https://www.ndoh.navajo-nsn.gov/COVID-19/COVID-19-Vaccine)
Standing Rock (overlaps ND, SD): (https://www.srstcovid19.com/) - some vax guidance, hotlines
Colorado River Indian Tribes (https://www.crit-nsn.gov/COVID-19%20Info.shtml) - no vax guidance
Goshute - https://ctgr.us/home/ - no vax guidance
Ft McDermitt - https://www.fmcdwc.org/category/covid-19/ - vaccination consent form, no specific vax guidance
Fort Mojave - https://www.fortmojaveindiantribe.com/tribal-departments/ - health department page, no vax guidance
Iowa Tribe - https://iowatribeofkansasandnebraska.com/news-information/covid-19-update/ - no vax guidance
Pokagon Tribe - https://www.pokagonband-nsn.gov/pokagon-covid-helpline - Hotline, waitlist
Quechan Tribe - https://www.quechantribe.com/article/covid-19-vaccine-prioritization - custom phasing, hotline
Sac and Fox - http://sacandfoxnation-nsn.gov/departments/covid-relief/ - no vax guidelines
Washoe - https://washoe.us/news-and-announcements/covid-19-updates.html - no vax guidelines

Montana

Crow I.R - (http://www.crow-nsn.gov/covid19.html) - hotlines, no vax guidelines, assume MT state guidelines

Washington

Yakama Nation (http://www.yakamanation.org/covid-19.php) - no guidelines on site, assume follows WA state guidelines
Colville Tribes (https://www.colvilletribes.com/novel-coronavirus) - no guidelines on site, assume follows WA state guidelines
Spokane Tribes (https://spokanetribe.com/covid-19-vaccine-update-january-25-2021/) - custom guidelines, follow-up phone number
Quinalt Nation (http://www.quinaultindiannation.com/qincovid19.htm) - custom guidelines, registration form
Chehalis Tribe (https://www.chehalistribe.org/activities/covid-19-information/) - custom guidelines
Nisqually tribe (http://www.nisqually-nsn.gov/index.php/announcements/) - custom guidelines in PDF
Nooksack Tribe (https://nooksacktribe.org/tribal-council/2021/nooksacks-phased-approach-moderna-vaccine-allocation/) - custom phases
Port Gamble - https://pgst.nsn.us/covid - custom guidelines embedded in youtube video
Puyallup Tribe (http://puyallup-tribe.com/COVID19/covid.php) - no guidelines, assume follows WA state guidelines
Queleute - https://quileutenation.org/covid-19/ - custom guidelines, hotline phone number
Swinomish Tribe (https://swinomish-nsn.gov/community/coronavirus-information-updates.aspx) - custom eligibility, hotline
Squaxin Island Tribe (https://squaxinisland.org/covid-19/covid-19-vaccinations/) - custom guidelines
Samish - https://www.samishtribe.nsn.us/home/samish-indian-nation-response-to-covid-19 - no custom eligibility, some resources for tribal citizens in pierce county, seattle
Suquamish - https://suquamish.nsn.us/suquamish-tribe-vaccine-distribution-approach/ - custom guidelines, email contact

CI/CD Healthbot Assets

For HealthBot components, this will probably be a bit wonky. They provide some REST APIs for automatically managing artifact pushes, but support is spotty and some is WIP. \

Duplicate of #37

Handle the ability to show deeper qualification details on demaind

States' definitions for things like "healthcare worker" or "essential worker" is often highly qualified to include membership of specific industries (see Alabama's Healthcare Worker):

Healthcare workers in Phase 1a include, but are not limited to, emergency medical service personnel, nurses, nursing assistants, home healthcare personnel, physicians, technicians, therapists, phlebotomists, pharmacists, students and trainees, contractual staff not employed by the healthcare facility, medical supply delivery, mortuary services, and persons not directly involved in patient care, but who could be exposed to infectious agents that can be transmitted in the healthcare setting (e.g., clerical, dietary, environmental services, laundry, security, engineering and facilities management, administrative, billing, and volunteer personnel).

This is far too verbose for a chatbot, but it may be appropriate to link out to a piece of clarifying text where we can express that legalese - probably a link to the canonical state source at first, and then perhaps an adaptive card representing that content. Some hover content may work as well, or perhaps an "interrupting scenario" that can provide this additional data in the chat and then pop back to the main eligibility chat.
Related to #5

Offer to shunt to "Phasefinder" type Websites

Some websites have nice interactive workflows, like Washington State's PhaseFinder. When states offer these workflow sites, there is a risk that the HealthBot is duplicating their functionality and providing out-of-date information.

We should offer to shunt to these sites when available:

e.g. It looks like Washington State has a website to walk you through the eligibility process at aka.ms/covid19/phasefinder/wa. This is probably the best source of up-to-date information. Would you like to continue here anyway?

Show Integrated Scheduling Links

This is highly dependent on figuring out what states support deep integration with their scheduling systems. There should always be graceful fallbacks, but ideally we would show a card that allowed them to schedule a vaccination in situ.

New Workflow: Vaccine Supply and Inventory

This is dependent on whether we can find a service or a canonical source for understanding the supply/demand situation for the COVID-19 vaccine. It would be nice to be able to ask the high-level questions:

"Are there vaccines in my area?"
"Can you notify me when there are vaccines in my area?"

Investigate using Browser's Location API in Ambient Context

Oren (former azure healthbot architect) seemed to indicate that you could leverage the container app's browser APIs to get location data and pass that into the workflow. I'm not sure what that API looks like, but could streamline our location workflow.

Dev environment support

Do dev tools exist (e.g., VSCode extensions) for HealthBot or Bot Framework that can be used to streamline collaborative dev?

Investigate Azure Function Scaling Limits

One area of risk that the HealthBot team didn't like was incorporating RESTful services. Our dataset is static, so there shouldn't be a database tier limiting the scaling of the services. If we can prove that an Azure function will scale on par with the HealthBot (e.g. handle 4k requests/sec), I think we can demonstrate that the fears about a service layer are overblown.

Determine actionable next steps for each state: e.g. registration, hotline, scheduling system, vras, etc..

The document we sent out contains the canonical data sources for each state, but it does not contain a set of actionable next-steps.

Data points that fit this description would contain:

  • Phone Numbers
  • Links to booking systems
  • Links to workflow systems (e.g. Washington state PhaseFinder)
  • A link to a page of vaccination sites

This will evolve in the future for certain states to incorporate deeper mapping features and integration with scheduling systems.

Handle Vaccination Sites Links

In addition to handling other output types (like phone #s in #6), we will have to handle the case when we should output a link to a list of sites. This should be presented in addition to other output types of data.

Related to #3

Schema: Directory-Based Fine-Grained Resolution

  • Model each state into a folder with localization files, info.json, and vaccination.json (resolved in #54 )
  • Add markdown file per state with canonical data sources, additional information
  • Implement region traversing under region/ sub-folders

Schema: extends: Edge Cases

One schema extension I'm working on is the ability for phases to "extend" other phases so that prior answers can be rolled in. In this case we need a way for later phases to override some types of questions.

E.g. a later phase with an age qualification should override any prior phase's age qualification. The same issue applies with the definition of essential workers, etc..

Show Vaccination Location Cards

In the PlasmaBot on TFIIU, at the end of the workflow they show a horizontal list of cards of nearby plasma donation sites. This would be obviously better than forwarding to a list of vaccination sites.

Related to #7 (Advanced Case)

Handle Phase-Straddling

Right now, according to our schema, states transition from phase to phase and the qualifications switch over en masse. What we're seeing in some states in that qualifications in phase 1b are being applied partially, while states remain technically in an earlier phase.

Perhaps we should rethink the data schema. It may make sense to eliminate the phase object and refactor qualifications to be objects. These would contain a phase-label, and an optional active that indicates whether it has been activated. We would also have to add the currentPhaseLabel property back to the state or local region.

Acquire Non-English Localization Strings

The localization tables handle a handful of languages by default. By order of population size we should create translations for languages when the english variant is stable.

Part of this task will be prioritizing translations.

CI/CD Data Services API

  • Push data to Azure Storage (Derek)
  • Push data to HealthBot over REST APIs
  • Set up backup/restore tools over CLI using REST APIs
  • Red/Green Prod Environment

Investigate Chatbot Styling

To integrate with TFIIU or other partner sites we may have to style the bot to match the target scheme. This should be easy with main chatbot elements (e.g. avatar icon, chat bubbles), but we'll need to consider this more cautiously as we deal with adaptive card elements.

Model nested regions where county phases differ from states

This table (https://www.kff.org/other/state-indicator/state-covid-19-vaccine-priority-populations/?currentTimeframe=0&sortModel=%7B%22colId%22:%22Location%22,%22sort%22:%22asc%22%7D) indicates that several states have counties in slightly different phases. In these cases we have two options:

  1. Phase Definitions are Equivalent, Active Phase Differs
    This case should be a minimal change (phase="washington.kitsap.1a"

  2. Phase Definition differs
    In this case, we could model the nested county's phase definitions as a new phase array:
    e.g.

// At county level
"phases": [{
   {
      "name": "1a",
      "extends": "washington.1a" // this has not been modeled yet
      "qualifications": ["age.55_up"]
   }
}]

Investigate: Consider 'maybe' eligibility output

Right now the workflow results in a boolean eligibility result. We should consider modeling this out into an object with an enumeration in case we need to incorporate more detailed data regarding their eligibility status. Some states seem to be cagey about whether people in age groups qualify, depending on what county they live in.

Handle Hotline Phone # Links

Phone numbers for hotlines should be presented alongside the state-info link at the end of a workflow (albeit only when eligibility is confirmed). This probably needs to be modeled out as its own string that is generated during the final output steps of the workflow.

Related to #3

Improve Web Output with Adaptive Cards

Presently the output results from the workflow is a text blurb and a link. Some other issues in this repository indicate that we should provide additional links and content. The web-based chatbot may be well-served by some nicely designed adaptive cards that present this output in an elegant, readable way.

Related #3
Related #6
Related #7
Related #8

Web Container Deployment

This is mainly to test out what we can accomplish with a web-based deployment (e.g. can we pass arguments to the workflow).

Verify the phase schedule accuracy for each state

The original bot implementation was based on a table from KFF: https://www.kff.org/other/state-indicator/state-covid-19-vaccine-priority-populations/?currentTimeframe=0&sortModel=%7B%22colId%22:%22Location%22,%22sort%22:%22asc%22%7D.

One option we are pursuing is engaging with KFF to keep this table up-to-date as a centralized source of knowledge for phase information across states. However, assuming that will not be the case we should investigate each canonical state source and verify that our rules align to the information they provide.

Implement Service/Workflow To Get Policy information from Zip

The Azure Healthbot people we've spoken to haven't been big fans of this idea, but there's also a risk that coding everything into the healthbot will present development friction. I think it's probably safe to continue with the RESTful service route, and if we need to unwind that and roll it into the healthbot for some reason we can do that lift in the future.

Work with Bing team for HealthBot surfacing

If we could incorporate the Bot on the Bing homepage, that would be fantastic. If not we should look into fallbacks. We know that TFIIU would be interested in surfacing this content, and we may have to deploy it into our own custom webapp.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.