-
Notifications
You must be signed in to change notification settings - Fork 1
Partner request for API: appointment websites, vaccine types, appointment availability and structured hours information #705
Comments
Vaccine types and appointment availability will come from #650. Appointment websites is a bit harder, because most of those are for things like pharmacy chains and we've not been keeping our "provider" information robust as we scaled beyond California. We may well be able to pull this together based on concordance identifiers for High quality structured hours information may be available from specific trusted source location providers. |
Do those look right though?
|
Two ways we could do this then:
I like option 1 the best. Provider is one of our version-tracked tables, so I can tell how often they are updated.
|
I've now assigned providers to locations that were missing them for the following authorities:
Next step: expose the vaccination information for those providers in the APIv0 output. |
I'm going to expose it like this: {
"name": "Name",
"provider": {
"name": "CVS",
"vaccine_info_url": "..."
}
} So the only field from |
Demo: https://vial-staging.calltheshots.us/api/searchLocations?format=v0preview&size=50 Some of them have this: {
"id": "rec01tcOLdRjMfCnZ",
"name": "ZELZAH PHARMACY",
"provider": {
"name": "None / Unknown / Unimportant",
"vaccine_info_url": null
}, https://vial-staging.calltheshots.us/api/searchLocations?provider=None%20/%20Unknown%20/%20Unimportant&size=0 shows 3244 with that value on staging and https://vial.calltheshots.us/api/searchLocations?provider=None%20/%20Unknown%20/%20Unimportant&size=0 shows 2730 with that value in production. A map of those in production confirms that they are almost all in CA: https://vial.calltheshots.us/api/searchLocations?provider=None%20/%20Unknown%20/%20Unimportant&format=map&all=1 I'm going to update all of those locations to have provider of null instead, then I'm going to mark that provider as obsolete - since provider can be null which means the same thing. |
I archived the list of location IDs that currently have |
Ran this: url = "https://vial.calltheshots.us/api/searchLocations?provider=None%20/%20Unknown%20/%20Unimportant&all=1&format=ids"
ids = httpx.get(url, headers={"Authorization": "Bearer {}".format(api_key)}).json()
chunks = list(make_chunks(ids, 100))
for chunk in tqdm(chunks):
httpx.post("https://vial.calltheshots.us/api/updateLocations", timeout=20, json={
"update": {
id: {
"provider_null": True
} for id in chunk
},
"revision_comment": "Issue #707"
}, headers={"Authorization": "Bearer {}".format(api_key)}) https://vial.calltheshots.us/api/searchLocations?provider=None%20/%20Unknown%20/%20Unimportant&size=0 now returns 0 |
Renamed https://vial.calltheshots.us/admin/core/provider/5/change/ to have OBSOLETE in the name. |
One of the locations in {
"id": "rec07ksibBimtTgNA",
"name": "WALGREENS #2810",
"provider": {
"name": "Walgreens",
"provider_type": "Pharmacy",
"vaccine_info_url": "https://www.walgreens.com/findcare/vaccination/covid-19"
},
"state": "CA",
"latitude": 36.93495,
"longitude": -121.77202,
"location_type": "Pharmacy",
"phone_number": "831-768-0183",
"full_address": "1810 FREEDOM BLVD, Freedom, CA 95019",
"city": null,
"county": "Santa Cruz",
"zip_code": null,
"hours": {
"unstructured": "Monday - Sunday: Open 24 hours\nMeal break from 1:30 PM - 2 PM everyday ",
"structured": [
{
"day": "monday",
"opens": "00:00",
"closes": "23:59"
},
{
"day": "tuesday",
"opens": "00:00",
"closes": "23:59"
},
{
"day": "wednesday",
"opens": "00:00",
"closes": "23:59"
},
{
"day": "thursday",
"opens": "00:00",
"closes": "23:59"
},
{
"day": "friday",
"opens": "00:00",
"closes": "23:59"
},
{
"day": "saturday",
"opens": "00:00",
"closes": "23:59"
},
{
"day": "sunday",
"opens": "00:00",
"closes": "23:59"
}
]
},
"website": null,
"vaccines_offered": [
"Pfizer"
],
"concordances": [
"google_places:ChIJxd3pxlYajoARRxz1FkiAacg",
"getmyvax_org:62e6da23-df70-40d6-b655-b5643cfe74c5",
"placekey:223@5vh-dx4-dd9",
"walgreens:2810",
"vaccinespotter_org:2736889",
"vaccinefinder_org:450773d2-cf63-4ddd-a632-45809b45f28b",
"_tag_provider:walgreens",
"us_carbon_health:499e577b-78ec-475f-8652-dd0833601f3a",
"us_carbon_health:da1c2de2-1aab-420e-a366-a178b4020052",
"placekey:223-223@5vh-dx4-dd9"
],
"last_verified_by_vts": "2021-05-13T16:21:27.244660+00:00",
"vts_url": "https://www.vaccinatethestates.com/?lng=-121.77202&lat=36.93495#rec07ksibBimtTgNA"
} |
I'm going to expose these two fields next: Lines 314 to 319 in 1a79b1e
|
https://vial-staging.calltheshots.us/location/ltbpt is an example of this: {
"id": "ltbpt",
"name": "Walgreen Drug Store",
"provider": null,
"state": "NY",
"latitude": 40.5824,
"longitude": -73.82907,
"location_type": "Unknown",
"phone_number": null,
"full_address": "10640 ROCKAWAY BEACH BOULEVARD\nROCKAWAY PARK, NY 11694",
"city": "ROCKAWAY PARK",
"county": "Queens",
"zip_code": "11694",
"hours": {
"unstructured": null,
"structured": null
},
"website": "https://www.walgreens.com/findcare/vaccination/covid-19",
"vaccines_offered": null,
"accepts_appointments": true,
"accepts_walkins": false,
"concordances": [
"vaccinespotter_org:2713291",
"us_giscorps_vaccine_providers:82c5f284-453d-4cfe-84d8-e0548ac397c1"
],
"last_verified_by_vts": null,
"vts_url": "https://www.vaccinatethestates.com/?lng=-73.82907&lat=40.58240#ltbpt"
} Note that |
This is all now live in production, see https://api.vaccinatethestates.com/v0/locations.json |
Summary of the changes:
|
The text was updated successfully, but these errors were encountered: