FHIR Chat · Publisher: CVS · smart/scheduling-links

Stream: smart/scheduling-links

Topic: Publisher: CVS


view this post on Zulip Josh Mandel (Apr 12 2021 at 15:15):

@Hemalatha Ravishankar thanks for sharing sample files over email. As a first step it'd be great to get these hosted at a "$bulk-publish" endpoint, or if this is going to take a little while, perhaps you can share updated examples as an attachment here on zulip. (FYI @Bharath Suryakanthan)

view this post on Zulip Hemalatha Ravishankar (Apr 12 2021 at 16:29):

Josh Mandel said:

Hemalatha Ravishankar thanks for sharing sample files over email. As a first step it'd be great to get these hosted at a "$bulk-publish" endpoint, or if this is going to take a little while, perhaps you can share updated examples as an attachment here on zulip. (FYI Bharath Suryakanthan)

Attached an example for Location, Schedule and Slot. sample_cvs_covax

view this post on Zulip Rob Brackett (Apr 12 2021 at 16:39):

Looking forward to having this live! A few questions for you, @Hemalatha Ravishankar :

  • Is the id field a CVS store number? If not, could you add that to the identifier array? (It would really help those of us that have been using your proprietary API match up records.)
  • Would it be possible to get address.district (i.e. the county name) in there?
  • Are the slot capacities here going to be actual counts, or just 1 (some available) vs. 0 (none available)?

view this post on Zulip Josh Mandel (Apr 12 2021 at 17:03):

Re: store numbers, it appears that the Location.ids are CVS store numbers. But just to give an example of how CVS could do this more explicitly (which would allow clients to avoid depending on this implementation detail):

{
   "resourceType":"Location",
   "id":"1240",
   "identifier":[
      {
         "system":"https://cdc.gov/vaccines/programs/vtrcks",
         "value":"CV1001240"
      },      {
         "system":"https://www.cvs.com/store-locator/landing",
         "value":"1240"
      }
   ],
   "name":"CVS Pharmacy in MANASQUAN, NJ",
...

view this post on Zulip Josh Mandel (Apr 12 2021 at 17:05):

Would be great to get your thoughts on this + Rob's other questions, @Hemalatha Ravishankar.

view this post on Zulip Josh Mandel (Apr 12 2021 at 17:05):

Also, excellent to see these data in the example file you shared! Do you have a timeline for sharing a $bulk-publish endpoint for testing?

view this post on Zulip Hemalatha Ravishankar (Apr 13 2021 at 19:39):

Josh Mandel said:

Would be great to get your thoughts on this + Rob's other questions, Hemalatha Ravishankar.

@Rob Brackett Yes, the id field id CVS store number

view this post on Zulip Hemalatha Ravishankar (Apr 13 2021 at 19:40):

@Rob Brackett As district is optional field, we did not add it. Checking to see if we can add.
@Josh Mandel CVS should be able to get the $bulk-publish endpoint this week.

view this post on Zulip Hemalatha Ravishankar (Apr 16 2021 at 20:58):

@Rob Brackett We will not be able to add district details for initial release.
@Josh Mandel $bulk-publish endpoint with sample data https://www.cvs.com/immunizations/inventory/data/$bulk-publish

view this post on Zulip Josh Mandel (Apr 16 2021 at 21:15):

Thansk @Hemalatha Ravishankar ! This is great to see in place! (Just to confirm, this indicates that currently across 8025 locations, there are 27 slots currently available?

view this post on Zulip Josh Mandel (Apr 16 2021 at 21:16):

(Understanding of course that some of these slots may accommodate >1 person.)

view this post on Zulip Josh Mandel (Apr 16 2021 at 21:19):

And in terms of calendar times, all these slots are for today; does this indicate there are no slots for future dates, or are these just not yet being included in the payload?

view this post on Zulip Hemalatha Ravishankar (Apr 16 2021 at 21:38):

@Josh Mandel This is sample data. In actual production version, Location file will include all CVS stores that administer COVID Vaccines--> Schedule file will be mapped to each location--> slot will be mapped to each schedule. So if 100 location administer COVID Vaccine, you will see 100 schedules mapped to location and 100 slots mapped to schedule with capacity extension (1- Free, 0 - Busy).

view this post on Zulip Josh Mandel (Apr 16 2021 at 21:44):

Thanks @Hemalatha Ravishankar! Does this mean that even in the real data set you're only planning to publish data about today's availability and not look out to future dates? (Also, do you have a sense of when you'll be able to publisher the broader set? Might be good to indicate in the URL that these are sample data, also.)

view this post on Zulip Josh Mandel (Apr 16 2021 at 23:13):

Also re: total number or files, it would be good to chunk at some level so you're not creating individual schedule and slot files per location. There's no hard rule against this, but there are significant performance benefits in not having to fetch thousands of files.

view this post on Zulip Josh Mandel (Apr 16 2021 at 23:18):

For Schedule files and Location files, you can probably just use one of each, as in your sample data. For Slot files: Chunking at the state level, or across O(10^2) locations, or at O(10MB) gzipped file sizes is a good rule of thumb.

view this post on Zulip Hemalatha Ravishankar (Apr 17 2021 at 16:46):

@Josh Mandel The file will be 3 with each line item as you see in sample data. Currently, we are planning to show availability for today, we can configure to show availability for next 4 days (current days + 3days). What we may not do for MVP is break the availability for each day (We can target this for incremental release).
Also do you know when CDC is planning to go live?

view this post on Zulip Josh Mandel (Apr 17 2021 at 16:56):

Thanks @Hemalatha Ravishankar ! Having a 4-5 day window would help vs just "today" (and makes sense, re: incremental enhancements).

view this post on Zulip Rob Brackett (Apr 19 2021 at 16:03):

Yes, having a window that’s as large as you can make it would be extremely helpful! :)
(Also, thanks for the update on district; sorry for not getting back to this thread last week.)

view this post on Zulip Rob Brackett (Apr 27 2021 at 20:09):

@Hemalatha Ravishankar thanks for the note on today’s call that this is in production! It looks like you broke slots out by day, which is FANTASTIC, thank you. :heart:

I did notice that the slots use "Available" and "Fully Booked" for the status field; are you planning to change those to "free" and "busy"? (Just want to make sure consumer code I’m writing accounts for it correctly.)

view this post on Zulip Nick Muerdter (Apr 28 2021 at 14:19):

@Rob Brackett, @Hemalatha Ravishankar Oh, this sounds exciting! So does this mean the https://www.cvs.com/immunizations/inventory/data/$bulk-publish URL has production data and can be used by API consumers for public-facing things now? I'd love to start using this, but just want to make sure I understand. Thanks!

view this post on Zulip Rob Brackett (Apr 28 2021 at 16:29):

That’s my understanding, but would love to get explicit confirmation from @Hemalatha Ravishankar (she just mentioned it very briefly on the call, and it was news to me, too!)

view this post on Zulip Hemalatha Ravishankar (Apr 28 2021 at 16:36):

@Rob Brackett and @Nick Muerdter Yes, that is production link with live data which will refresh every 5 minutes.
@Rob Brackett Regarding your question on Slots, it will return "free" or "busy". we fixed that bug yesterday.
@Josh Mandel Do you know when Vaccinefinder will be going live with these data?

view this post on Zulip Josh Mandel (Apr 28 2021 at 16:53):

Awesome! This is great to see. (Suggest asking the USDS team re: Vaccine Finder plans.)

view this post on Zulip Rob Brackett (Apr 28 2021 at 16:54):

Awesome! I started integrating some of this data on our side and am wondering if the slot start and end times correspond to anything. It doesn’t look like they do (seems like they’re always 9 am – 7 pm UTC).

view this post on Zulip Nick Muerdter (Apr 29 2021 at 03:59):

@Hemalatha Ravishankar: I'm currently seeing various "free" slots in this new SMART Scheduling Links data feed for CVS. However, when I go to https://www.cvs.com/immunizations/covid-19-vaccine, it reports that all cities are fully booked, so there's no way to book appointments. Is this expected or a known issue? Just wondering how to align these different statuses. Thanks!

view this post on Zulip Hemalatha Ravishankar (Apr 29 2021 at 04:52):

Rob Brackett said:

Awesome! I started integrating some of this data on our side and am wondering if the slot start and end times correspond to anything. It doesn’t look like they do (seems like they’re always 9 am – 7 pm UTC).

Those are store timings not directly related to vaccine availability.

view this post on Zulip Rob Brackett (Apr 29 2021 at 17:15):

@Hemalatha Ravishankar :thumbs_up: , thanks.

@Nick Muerdter FWIW, in New Jersey we link directly in to https://www.cvs.com/vaccine/intake/store/cvd-schedule, which skips that screen, since we also found it to be inaccurate vs. CVS’s earlier, non-SMART API. My understanding was that it updates on a different timeframe and with more aggressive caching, but Hemalatha almost certainly has more details there. :)

view this post on Zulip Dennis Ai (Apr 29 2021 at 17:17):

+1 to clarification would be helpful

view this post on Zulip Hemalatha Ravishankar (Apr 30 2021 at 12:17):

Both CVS and file refer to same source of data. I am working with the team to understand the difference. Rob, then non-FHIR API should always be in sync with cvs.com.

view this post on Zulip Rob Brackett (Apr 30 2021 at 18:42):

OK. I think when we first looked at it, it was not, but we assumed that was an matter of caching, since that seemed to be an issue from our original call a few months back (I think that was with Bharath Suryakanthan, but I am not 100% on that).

view this post on Zulip Rob Brackett (Apr 30 2021 at 18:52):

(At any rate, we haven’t revisited whether they were totally in sync for at least a month now. So whatever was at issue may have fixed or changed.)

view this post on Zulip Hemalatha Ravishankar (Apr 30 2021 at 20:18):

@Rob Yes, there is a caching applied on API but we meet with Szuflita, Sam to explain how this works (Source of Data is same).
@Dennis Ai @Nick Muerdter I confirmed with team that, data on file will match cvs.com. May be by the time user comes to booking page, slots might have been taken (soft or hard allocation). The other reason that I can think of, after 9PM EST there will be few regular maintenance, during this time you may see differences. Please let me know if any questions

view this post on Zulip Hemalatha Ravishankar (May 04 2021 at 21:30):

@Josh Mandel Do you know when Vaccine Finder is planning to integrate with the data? Like to see work in action!

view this post on Zulip Josh Mandel (May 04 2021 at 21:39):

@Amy Quispe FYI

view this post on Zulip Nick Muerdter (May 04 2021 at 21:53):

@Hemalatha Ravishankar: Not Vaccine Finder, but VaccineSpotter.org switched over using the CVS SMART Links API last week (https://github.com/GUI/covid-vaccine-spotter/pull/172), so a belated big thank you! It's been working great, provides richer data than what I had previously been accessing, and just super awesome to use something officially supported. If you're looking for feedback, again, very happy overall, the only things that came to mind when I implemented this:

  1. Vaccine type information would be great, if possible, since I know a lot of people are filtering for specific types (J&J, Pfizer, etc).
  2. When I implemented this last week, I noticed that it seems like the SMART links data only had appointments starting on the following day (ie, tomorrow). But on CVS.com, I was seeing open appointment for the current day, so it seems like maybe the API doesn't have current day appointments? Does that sound right, or should I try to dig up examples to see if it's still happening? If this is still happening, not sure how big of a deal this is, but current day appointments might be more useful as appointments become more more available.

view this post on Zulip Hemalatha Ravishankar (May 06 2021 at 20:07):

Thank you Nick for your feedback and happy to meet you virtually. Please find my comments below,

  1. Vaccine Type can be planned as future enhancements. This is closely tied with slots and has its own complexity.
  2. Yes, the Sameday appointment schedule was rolled out recently but not presented on CVS Covid Vaccine schedule homepage. https://www.cvs.com/immunizations/covid-19-vaccine?icid=cvs-home-hero1-link1-coronavirus-vaccine. I will keep you posted when we are ready to update the inventory slot to include same-day appointments.

Please let me know if any questions.

Nick Muerdter said:

Hemalatha Ravishankar: Not Vaccine Finder, but VaccineSpotter.org switched over using the CVS SMART Links API last week (https://github.com/GUI/covid-vaccine-spotter/pull/172), so a belated big thank you! It's been working great, provides richer data than what I had previously been accessing, and just super awesome to use something officially supported. If you're looking for feedback, again, very happy overall, the only things that came to mind when I implemented this:

  1. Vaccine type information would be great, if possible, since I know a lot of people are filtering for specific types (J&J, Pfizer, etc).
  2. When I implemented this last week, I noticed that it seems like the SMART links data only had appointments starting on the following day (ie, tomorrow). But on CVS.com, I was seeing open appointment for the current day, so it seems like maybe the API doesn't have current day appointments? Does that sound right, or should I try to dig up examples to see if it's still happening? If this is still happening, not sure how big of a deal this is, but current day appointments might be more useful as appointments become more more available.

view this post on Zulip Hemalatha Ravishankar (May 11 2021 at 15:18):

@Nick Muerdter Do you know when are you going live with CVS data? Please update.

view this post on Zulip Nick Muerdter (May 11 2021 at 15:22):

@Hemalatha Ravishankar I went live with the CVS SMART data on Vaccine Spotter on April 30. Is that what you were looking for?

view this post on Zulip Hemalatha Ravishankar (May 11 2021 at 16:53):

Oh great, Thank you!

view this post on Zulip Hemalatha Ravishankar (May 11 2021 at 21:49):

@Dennis Ai Can you please help me understand how you are planning to integrate this data? Like the user flow would be really helpful.

view this post on Zulip Hemalatha Ravishankar (May 13 2021 at 00:22):

Hemalatha Ravishankar said:

Dennis Ai Can you please help me understand how you are planning to integrate this data? Like the user flow would be really helpful.

@Dennis Ai Can you please help with the above question?

view this post on Zulip Rob Brackett (May 18 2021 at 00:42):

@Hemalatha Ravishankar I finally had a chance to compare this with the older “Covid 19 Vaccine Availability” API that we’ve been using in New Jersey; it seems like the availability is different for locations pretty often.

(For example, just a minute ago, it was different for 80 locations in New Jersey. For all of those locations, the old API says "Fully Booked" but the SMART Scheduling Links API has some free slots.)

view this post on Zulip Hemalatha Ravishankar (May 18 2021 at 16:55):

@Rob Brackett Can you please let me know what time you found the differences? Did you check cvs.com to verify which data is correct API vs File? The possible reasons may be, 1. If this occurred after 7/8 PM EST, there may be a maintenance 2. API is cached for 15 mins at a different level but the files have one level caching and get refreshed once in 5 mins. Can you also please check for the timestamp in both API and Files to verify the data.?

view this post on Zulip Rob Brackett (May 18 2021 at 16:58):

I checked just now and am seeing differences (but only in 6 locations, rather than 80)

view this post on Zulip Rob Brackett (May 18 2021 at 17:02):

I don't really know an easy way to check the website for whether a particular location is available.

view this post on Zulip Rob Brackett (May 18 2021 at 17:04):

(I'm also seeing "We can't continue due to a technical glitch." when I get past the "confirm eligibility" step in the screener on the website.)

view this post on Zulip Rob Brackett (May 18 2021 at 17:12):

Website seems to be working again now. The difference seem to be jumping around a lot more today, so maybe it’s just down to the 5 vs. 15 minute update timeframe and the maintenance last night.

view this post on Zulip Hemalatha Ravishankar (May 18 2021 at 17:30):

Yes @Rob Brackett and also the file does not include same-day and booster scheduling appointment availability but cvs.com includes that too. Please let me know if we need to get into a call for further discussion. Happy to do so.

view this post on Zulip Rob Brackett (May 18 2021 at 17:31):

the file does not include same-day and booster scheduling appointment availability

Does the API New Jersey has been using include that? https://api.cvshealth.com/immunization-status/v1/covax-availability

view this post on Zulip Hemalatha Ravishankar (May 18 2021 at 17:36):

No API also does not include same-day scheduling and booster appointments. The difference between API and File is only the caching that I can think of.

view this post on Zulip Hemalatha Ravishankar (Jun 01 2021 at 19:15):

@Josh Mandel @Rob Brackett @Dennis Ai @Nick Muerdter FYI- The slot file will now have 14 days of availability. Please let me know if any questions.

view this post on Zulip Rob Brackett (Jun 08 2021 at 06:49):

I feel kind of dumb for not noticing this before, but are the VTrckS PINs in the CVS API correct? They seem to just be the store ID with a prefix. For example, here’s the start of one location entry:

{
  "resourceType":"Location",
  "id":"993",
  "identifier":[{
    "system":"https://cdc.gov/vaccines/programs/vtrcks",
    "value":"CV1000993"
  }],
}

We stopped doing anything special with VTrckS PINs when we realized they weren’t unique for all locations in New Jersey, so I had just been gathering but not paying close attention to them. Tonight I was gathering up some data for vaccines.gov folks and noticed these seemed off. They also don’t match CVS VTrckS PINs in a dump I have from New Jersey’s IIS from a couple months ago.

view this post on Zulip Rob Brackett (Jun 09 2021 at 19:21):

Talked with Castlight Health and CDC folks about this on the call yesterday. Seems like these are in fact correct; the discrepancy is that each CVS has multiple VTrckS PINs. The CV1000* ones are for federal allocations, and the ones we had in New Jersey are for state allocations.

view this post on Zulip Rob Brackett (Jun 09 2021 at 19:22):

(PINs starting with CV1 are specifically allocated to CVS, which is why they match the store numbers. :smile:)

view this post on Zulip Ashwath Ramesh (Jun 10 2021 at 10:07):

Hi Josh, The deployment is done in production it will be helpful if you could please validate the services now and approve the pull request and merge it to the publisher repository. image.png image.png

view this post on Zulip Hemanth Gorur (Jul 14 2021 at 20:24):

Castlight integrated the Appointment availability data being shared by CVS, Rite-Aid and walgreens. Here is a demo of how the information will be presented on vaccines.gov https://vimeo.com/575047522/b7d63395d5 .


Last updated: Apr 12 2022 at 19:14 UTC