Skip to content
This repository has been archived by the owner on Aug 30, 2021. It is now read-only.

Normalized Location Schema

Bryan Culbertson edited this page Apr 23, 2021 · 16 revisions

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...},
  },
}

Contact Type Enum

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

Day Of Week Enum

Used in opening_hours.days

  • monday
  • tuesday
  • wednesday
  • thursday
  • friday
  • saturday
  • sunday
  • public_holidays

Vaccine Type Enum

Used in inventory.vaccine

  • pfizer_biontech
  • moderna
  • johnson_johnson_janssen
  • oxford_astrazeneca

Supply Level Enum

Used in inventory.supply_level

  • less_than_48hrs
  • more_than_48hrs
  • out_of_stock
  • in_stock

Organization Enum

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

Authority Enum

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

Examples

Minimal Record

{
  "id": "45748",
  "name": "Rite Aid #05952",
  "address": {
    "street1": "1991 Mountain Boulevard",
    "city": "Oakland",
    "state": "CA",
    "zip": "94611",
  },
}

Typical Record

{
  "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,
  },
}