Skip to main content
Glama
update-asp.yml5.23 kB
name: Update ASP Pricing Data on: schedule: - cron: '0 6 15 1,4,7,10 *' # Run on 15th of Jan, Apr, Jul, Oct at 6 AM UTC (after quarter releases) workflow_dispatch: # Allow manual trigger jobs: check-and-update: runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v4 - name: Fetch latest ASP pricing file from CMS id: fetch-url run: | echo "Fetching latest ASP pricing file list from CMS..." # Fetch the ASP pricing page HTML ASP_PAGE=$(curl -s "https://www.cms.gov/medicare/payment/part-b-drugs/asp-pricing-files") # Extract the most recent ZIP file URL (looks for "202X-medicare-part-b-payment-limit-files.zip") LATEST_URL=$(echo "$ASP_PAGE" | grep -oP 'https://www\.cms\.gov/files/zip/[a-z]+-20[0-9]{2}-medicare-part-b-payment-limit-files?\.zip' | head -1) if [ -z "$LATEST_URL" ]; then echo "ERROR: Could not find ASP pricing file URL" exit 1 fi echo "Latest URL: $LATEST_URL" echo "LATEST_URL=$LATEST_URL" >> $GITHUB_ENV # Extract quarter from filename (e.g., "january-2026" -> "2026Q1") FILENAME=$(basename "$LATEST_URL") MONTH=$(echo "$FILENAME" | grep -oP '(january|april|july|october)' | tr '[:upper:]' '[:lower:]') YEAR=$(echo "$FILENAME" | grep -oP '20[0-9]{2}') case "$MONTH" in january) QUARTER="Q1" ;; april) QUARTER="Q2" ;; july) QUARTER="Q3" ;; october) QUARTER="Q4" ;; *) echo "ERROR: Unknown month $MONTH"; exit 1 ;; esac QUARTER_ID="${YEAR}${QUARTER}" echo "QUARTER_ID=$QUARTER_ID" >> $GITHUB_ENV echo "Detected quarter: $QUARTER_ID" - name: Check if update needed id: check-update run: | # Create metadata file if it doesn't exist mkdir -p data/asp touch data/asp/.last-update CURRENT_VERSION=$(cat data/asp/.last-update || echo "none") echo "Current version: $CURRENT_VERSION" echo "Latest version: $QUARTER_ID" if [ "$CURRENT_VERSION" = "$QUARTER_ID" ]; then echo "No update needed - already have latest quarter" echo "UPDATE_NEEDED=false" >> $GITHUB_ENV else echo "Update needed - new quarter available" echo "UPDATE_NEEDED=true" >> $GITHUB_ENV fi - name: Download and extract ASP data (only if update needed) if: env.UPDATE_NEEDED == 'true' run: | echo "Downloading ASP pricing file from: $LATEST_URL" wget -q --show-progress -O /tmp/asp.zip "$LATEST_URL" echo "Extracting ZIP file..." cd /tmp unzip -q asp.zip # Find the CSV file (Section 508 accessible version) CSV_FILE=$(find /tmp -name "*.csv" -type f | head -1) if [ -z "$CSV_FILE" ]; then echo "ERROR: No CSV file found in ZIP" exit 1 fi echo "Found CSV file: $CSV_FILE" # Remove header rows (first 8 lines) and save to data directory tail -n +9 "$CSV_FILE" > /tmp/asp_clean.csv # Move to repository with quarter-based filename OUTPUT_FILE="$GITHUB_WORKSPACE/data/asp/${QUARTER_ID}_ASP_Pricing.csv" mv /tmp/asp_clean.csv "$OUTPUT_FILE" echo "CSV file saved to: $OUTPUT_FILE" # Count number of drugs DRUG_COUNT=$(wc -l < "$OUTPUT_FILE") echo "Number of drugs in file: $((DRUG_COUNT - 1))" # -1 for header # Update version tracker echo "$QUARTER_ID" > $GITHUB_WORKSPACE/data/asp/.last-update # Cleanup temp files rm -rf /tmp/asp.zip /tmp/*.xls /tmp/*.csv - name: Compress file with gzip (only if update needed) if: env.UPDATE_NEEDED == 'true' run: | echo "Compressing ASP pricing file..." gzip -f data/asp/${QUARTER_ID}_ASP_Pricing.csv echo "Compressed file:" ls -lh data/asp/${QUARTER_ID}_ASP_Pricing.csv.gz echo "ASP data directory:" ls -lh data/asp/ - name: Commit and push (only if update needed) if: env.UPDATE_NEEDED == 'true' run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git add data/asp/ git commit -m "Update ASP pricing data to $QUARTER_ID Source: CMS Medicare Part B ASP Pricing Files Quarter: $QUARTER_ID Date: $(date -u +'%Y-%m-%d %H:%M:%S UTC') 🤖 Automated update via GitHub Actions" git push - name: Summary if: always() run: | if [ "$UPDATE_NEEDED" = "true" ]; then echo "✅ ASP pricing data updated successfully" echo "New quarter: $QUARTER_ID" echo "File: data/asp/${QUARTER_ID}_ASP_Pricing.csv.gz" else echo "ℹ️ No update needed - already have latest quarter" echo "Current quarter: $(cat data/asp/.last-update)" fi

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/openpharma-org/medicare-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server