-
Notifications
You must be signed in to change notification settings - Fork 45
Normalized Location Schema
If you are writing the normalize stage in python then you can use the Pydandic schema objects specified at schema/schema.py
{
id: str,
name: str,
address: {
street1: str,
street2: str,
city: str,
state: str as state initial e.g. CA,
zip: str,
},
location: {
latitude: float,
longitude: float,
},
contact: [
{
contact_type: str as contact type enum e.g. booking
phone: str as (###) ###-###,
website: str,
email: str,
other: str,
},
...
],
languages: [str as ISO 639-1 code],
opening_dates: [
{
opens: str as iso8601 date,
closes: str as iso8601 date,
},
...
],
opening_hours: [
{
day: str as day of week enum e.g. monday,
opens: str as hh:mm,
closes: str as hh:mm,
},
...
],
availability: {
drop_in: bool,
appointments: bool,
},
inventory: [
{
vaccine: str as vaccine type enum,
supply_level: str as supply level enum e.g. more_than_48hrs
},
...
],
access: {
walk: bool,
drive: bool,
wheelchair: bool,
},
parent_organization: {
id: str as parent organization enum e.g. rite_aid,
name: str,
},
links: [
{
authority: str as authority enum e.g. rite_aid or google_places,
id: str as id used by authority to reference this location e.g. 4096
uri: str as uri used by authority to reference this location
},
...
],
notes: [str, ...],
active: bool,
source: {
source: str as source type enum e.g. vaccinespotter,
id: str as source defined id e.g. 7382088,
fetched_from_uri: str as uri where data was fetched from,
fetched_at: str as iso8601 datetime (when scraper ran),
published_at: str as iso8601 datetime (when source claims it updated),
data: {...parsed source data in source schema...},
},
}
Used in contact.contact_type
- booking: For contact information used to book an appointment
- general: For contact information used to learn general information about facility
Used in opening_hours.days
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
- sunday
- public_holidays
Used in inventory.vaccine
- pfizer_biontech
- moderna
- johnson_johnson_janssen
- oxford_astrazeneca
Used in inventory.supply_level
- less_than_48hrs
- more_than_48hrs
- out_of_stock
- in_stock
Used in parent_organization.id
Organizations that have multiple sites that are grouped under the same parent organization. Also called providers in some feeds.
If there is not an existing enum value for an organization then create one as a lowercase name with non-alphanumeric characters replaced with underscores. If provider also has an authoritative id for this location then use the same enum value for both here and in links
field.
- rite_aid
- walgreens
Used in links.authority
Organizations, products, websites, etc. that provide an identifier for this specific facility. This is used to match facilities between multiple feeds.
If there is not an existing enum value for an authority then create one as a lowercase name with non-alphanumeric characters replaced with underscores.
- rite_aid
- walgreens
- google_places
- vaccinespotter
- vaccinefinder
{
"id": "45748",
"name": "Rite Aid #05952",
"address": {
"street1": "1991 Mountain Boulevard",
"city": "Oakland",
"state": "CA",
"zip": "94611",
},
}
{
"id": "45748",
"name": "Rite Aid #05952",
"address": {
"street1": "1991 Mountain Boulevard",
"city": "Oakland",
"state": "CA",
"zip": "94611",
},
"location": {
"latitude": 37.8273167,
"longitude": -122.2105179,
},
"contact": [
{
"contact_type": "booking",
"website": "https://www.riteaid.com/pharmacy/covid-qualifier",
},
{
"contact_type": "general",
"phone": "(510) 339-2215",
"website": "https://www.riteaid.com/locations/ca/oakland/1991-mountain-boulevard.html",
},
],
"availability": {
"appointments": true,
"drop_in": false,
},
}
- Find an issue you'd like to help out with
- Set up a development environment
- Read up on how our pipeline works
- Run the pipeline locally
Some pre-built tools to help fetch or parse common data types