CASP Module 34, Section 4: Digital Marketing, SEO, and Outcome Storytelling
CASP Owner / Founder Track – Module 34

Section 34.4: Digital Marketing, SEO, and Outcome Storytelling

Establishing your online presence: Utilizing digital marketing strategies (website, social media, targeted ads), optimizing for search engines (SEO) to reach patients and providers, and leveraging your clinical outcomes data to create compelling case studies and testimonials.

SECTION 34.4

Digital Marketing, SEO, and Outcome Storytelling

Building Credibility and Reach in the Digital Age: From Website to Data-Driven Proof.

34.4.1 The “Why”: Your Digital Reputation is Your Modern Brand

In the previous sections, we meticulously crafted your specialty pharmacy’s brand identity, defined unique value propositions for patients, providers, and payers, mapped your referral ecosystem, and developed strategies for provider education and field engagement. These foundational elements are crucial for building trust through direct interaction. However, in today’s interconnected world, your physical presence and direct outreach are only one part of the equation. Your digital presence is often the first—and sometimes the only—impression you make.

Think about the modern patient journey. A patient diagnosed with Multiple Sclerosis is overwhelmed. After leaving the neurologist’s office, what’s one of the first things they do? They Google “Multiple Sclerosis treatment options,” “MS medication side effects,” or “specialty pharmacy for MS near me.” Similarly, a busy nurse practitioner tasked with referring a patient for a complex biologic might search for “[Your Pharmacy Name] referral form” or “specialty pharmacy PA assistance [City].”

If you don’t exist online, or if your online presence is unprofessional, confusing, or buried on page 10 of Google search results, you are invisible. Your meticulously built operational excellence and high-touch service model become irrelevant if potential patients and referrers cannot find you or, worse, find an online presence that undermines your credibility.

Furthermore, specialty pharmacy thrives on demonstrating value. In an era demanding evidence-based medicine and value-based care, simply claiming superior service is insufficient. You must prove it. Digital platforms provide the ideal channel for “outcome storytelling”—leveraging your clinical and operational data to create compelling narratives that showcase your impact on adherence, cost savings, and patient well-being. This data-driven approach is essential for building trust with sophisticated stakeholders like payers and health systems.

This section is the masterclass on establishing and optimizing your digital footprint. We will move beyond the basics of just “having a website” and delve into strategic digital marketing tailored for the unique complexities of specialty pharmacy. We will demystify Search Engine Optimization (SEO), providing practical steps to improve your visibility. Most importantly, we will explore the art and science of transforming your internal performance metrics into powerful outcome stories that resonate with your target audiences and drive sustainable growth. In the 21st century, your digital strategy is not separate from your business strategy—it is a core component of it.

Pharmacist Analogy: The Patient Education Pamphlet vs. The Online Health Hub

Consider how patient education has evolved, mirroring the shift needed in your marketing mindset.

The Patient Education Pamphlet (The “Old Marketing” Model):
Historically, when counseling a patient on a condition like diabetes, you might hand them a pre-printed, static pamphlet from a drug manufacturer or a professional organization. It contained basic information, was often outdated, and the interaction was one-way. The pharmacy’s role was primarily as a passive distributor of this information. Its “reach” was limited to patients physically present in the pharmacy.

The Online Health Hub (The “Digital Marketing & Education” Model):
Now, imagine a modern health system or even a progressive pharmacy group. They have a comprehensive online “Diabetes Health Hub.” This digital platform offers:

  • SEO-Optimized Articles: Content like “Understanding Your A1c,” “Healthy Eating for Diabetics,” “Comparing Insulin Types,” written in patient-friendly language and easily discoverable via Google search.
  • Interactive Tools: Blood sugar trackers, carb counting calculators, medication reminder apps.
  • Video Resources: Pharmacist-led demonstrations on using insulin pens or glucose meters.
  • Community Forums: Moderated spaces for patients to share experiences and support each other (with appropriate disclaimers).
  • Targeted Communication: Opt-in email newsletters with seasonal tips or new research updates.
This hub doesn’t just provide static information; it offers dynamic, accessible, and engaging resources. It positions the organization as a trusted expert, attracts patients proactively through search engines (SEO), builds a loyal community, and can even integrate appointment scheduling or refill requests. Its “reach” is potentially global.

The Founder’s Pivot:
Your specialty pharmacy’s digital presence must evolve from a simple “online brochure” (the pamphlet) to a valuable “Resource Hub” for your specific niche. Your website and digital channels should not just list your services; they should actively educate and empower both patients and providers within your therapeutic areas of focus.

By creating high-quality, SEO-optimized content about managing Hepatitis C, understanding Crohn’s disease therapies, or navigating oncology drug financial aid, you achieve several goals simultaneously:
1. Attract Organic Traffic: Patients and providers searching for this information find you.
2. Build Credibility: You demonstrate your expertise and establish trust *before* they even become a customer.
3. Support Your Field Team: Your liaisons can share links to these resources, reinforcing their conversations.
4. Differentiate Your Brand: You move beyond simply “dispensing” to become a true clinical partner and information resource.

This section focuses on building that digital “Health Hub” – strategically using your website, search optimization, and data to create a powerful engine for attracting, engaging, and proving your value to the specialty pharmacy ecosystem.

34.4.2 Masterclass: Digital Marketing Fundamentals for Specialty Pharmacy

Digital marketing encompasses a wide range of online strategies. For a specialty pharmacy, the focus should be less on broad advertising and more on building credibility, providing value, and facilitating access for specific, niche audiences. Your clinical expertise is your greatest marketing asset.

Component 1: Your Website – The Digital Hub

As discussed in Section 34.1.5, your website is the cornerstone of your digital presence. It’s not just an online brochure; it’s your virtual office, information center, and primary communication channel. It must be professional, user-friendly, and optimized for multiple audiences.

Essential Website Elements Revisited & Expanded:

  • Clear Audience Navigation: Prominent “For Patients” and “For Prescribers” sections are non-negotiable. Ensure distinct pathways and content tailored to each group’s needs and value proposition.
  • Professional Design & Branding: Your website must visually reflect your brand identity (logo, colors, fonts from your Brand Guide). It should look clean, modern, and trustworthy. Avoid clutter and stock photos that feel generic. Invest in professional design.
  • Mobile Responsiveness: A significant portion of users (especially patients) will access your site via smartphones or tablets. Your website MUST adapt seamlessly to different screen sizes. Test it rigorously.
  • Fast Loading Speed: Slow websites frustrate users and hurt your search engine rankings. Optimize images, use efficient code, and choose reliable hosting.
  • Secure Forms & Portals: Any form collecting patient or provider information (referral forms, contact forms) MUST be HIPAA-compliant and secure (HTTPS). Patient portals for refills or communication require robust security measures.
  • Compelling Content (See Content Marketing below): Your website needs more than just service listings. It needs valuable, educational content that attracts visitors and establishes expertise.
  • Clear Calls-to-Action (CTAs): What do you want visitors to do? Make it obvious. Examples: “Refer a Patient,” “Request Patient Support,” “Contact Our Team,” “Download Our Financial Aid Guide.”
  • Accurate Contact Information: Ensure phone numbers (patient line vs. provider line), fax number, address, and hours are prominent and correct. Include an embedded Google Map if you have a physical location patients might visit (less common for SP, but possible).
  • Accreditation Seals: Prominently display your URAC, ACHC, and potentially LegitScript accreditation seals to build immediate credibility.
Website Pitfall: The “DIY Disaster”

As a founder managing startup costs, the temptation to build your own website using a cheap template service (like Wix or Squarespace) is strong. Resist it. While those platforms are fine for simple brochure sites, they often lack the customization, security features (especially HIPAA compliance for forms/portals), and SEO capabilities needed for a professional specialty pharmacy. Furthermore, a poorly designed, amateurish website instantly destroys the “expert specialist” brand you are trying to build.

Recommendation: Budget for professional web design and development from a firm with experience in healthcare. It’s a foundational investment, not an optional expense. Ensure they understand HIPAA requirements for any data transmission or storage.

Component 2: Content Marketing – Educate to Attract

Content marketing is the strategy of creating and distributing valuable, relevant, and consistent content to attract and retain a clearly defined audience—and, ultimately, to drive profitable customer action. For specialty pharmacy, this means becoming a trusted source of information for patients and providers in your niche.

Your Goal: Answer the questions your audience is already asking online.

Types of Content (Leverage Your Clinical Expertise!):

  • Disease State Education Pages: Create comprehensive, patient-friendly (but clinically accurate) pages for each core disease state you serve (e.g., Rheumatoid Arthritis, Crohn’s Disease, Multiple Sclerosis, Oncology [specific types]). Cover basics, treatment goals, common medication classes, and lifestyle tips. These pages become valuable SEO assets.
  • Medication Information Pages: Develop detailed pages for key specialty drugs you dispense. Go beyond the package insert. Discuss administration (with videos if possible), common side effects and management tips, storage requirements, and financial assistance resources specific to that drug. Compliance Note: Be careful about making direct efficacy claims; stick to factual, balanced information.
  • “How-To” Guides & Checklists: Create practical resources. Examples: “Your Checklist for Starting a Biologic,” “How to Navigate Prior Authorization Denials,” “A Patient’s Guide to Specialty Pharmacy Costs.”
  • Blog Posts: Regularly publish articles on relevant topics: new drug approvals, updates in treatment guidelines, tips for managing specific side effects, interviews with your clinical team, explanations of insurance concepts (deductibles, OOP max).
  • Infographics & Visuals: Condense complex information (e.g., the PA process, the components of Medicare Part D) into easily shareable graphics.
  • Video Content: Short videos explaining services, demonstrating injection techniques, or featuring pharmacist Q&A sessions can be highly engaging.

Distribution Channels:

  • Post everything on your website (optimized for SEO – see next section).
  • Share links on your social media channels.
  • Include links in your email newsletters.
  • Provide links or printouts via your field team during provider visits.

Component 3: Social Media – Engage and Build Community (Carefully)

Social media for specialty pharmacy requires a nuanced and compliant approach. It’s less about viral marketing and more about professional engagement and targeted community building.

Platform Strategy:

  • LinkedIn (Primary for B2B): This is crucial for connecting with providers, payers, health system administrators, and potential employees. Share company news, links to your educational content (blog posts, outcomes data), highlight your team’s expertise, and engage in industry discussions. Position your pharmacy as a thought leader.
  • Facebook/Instagram (Potential for B2C, Use with Caution): Can be used for general brand awareness, sharing patient-friendly educational content, highlighting your company culture, and potentially running targeted ads (geo-fenced). Major Compliance Risk: Never discuss specific patient cases. Be extremely careful about engaging with patient comments that might reveal PHI. Monitor comments closely. Many SPs choose *not* to have a major patient-facing presence on these platforms due to risk.
  • Private Facebook Groups / Online Forums (Patient Support – Advanced): Some SPs create or sponsor private, moderated groups for patients with specific conditions. This can build deep loyalty but requires significant resources for moderation and compliance oversight.
  • Twitter/X (Industry Engagement): Useful for following industry news, engaging with professional organizations, and sharing quick updates or links.

Content Strategy: Focus on sharing value. Link back to your website content. Highlight team members and expertise. Share (de-identified) positive patient feedback (with explicit consent). Post about community involvement. Avoid overly “salesy” posts.

HIPAA & Social Media: A Minefield

Social media is inherently public. Sharing anything that could potentially identify a patient, even indirectly (e.g., “So proud of our team for helping a patient in [Small Town] get approved for their rare disease drug!”), is a HIPAA violation waiting to happen. Responding to a patient comment like “My delivery was late!” can confirm they are your patient, violating HIPAA.

Strict Policy Required: You need a clear social media policy for all employees. All official posts should be vetted. Patient interactions should immediately be taken offline to a secure channel (phone call, portal message). Patient testimonials require explicit, written HIPAA authorization detailing *exactly* what information can be shared and where.

Component 4: Email Marketing – Nurture Relationships

Email remains a powerful tool for direct communication, especially for nurturing relationships with opted-in audiences.

  • List Building (Opt-In ONLY): Collect email addresses ethically through website forms (e.g., “Subscribe to our newsletter,” “Download our Financial Aid Guide”). Never buy email lists. Segment your lists (e.g., Patients-RA, Patients-Onc, Providers-GI).
  • Newsletters: Send regular (e.g., monthly or quarterly) newsletters with links to your latest blog posts, service updates, upcoming events (webinars), or relevant industry news. Tailor content to the segment.
  • Service Updates: Inform providers about new drugs you dispense, changes in your referral process, or new payer contracts.
  • Patient Reminders/Support (Via Secure Channels): While bulk email isn’t for PHI, secure patient portal messaging or dedicated platforms can be used for refill reminders, adherence check-ins, or links to educational resources, enhancing the patient experience.
  • Automation: Use email marketing platforms (e.g., Mailchimp, Constant Contact – ensure HIPAA compliance if handling PHI) to automate welcome sequences for new subscribers or targeted campaigns based on interests.

Component 5: Paid Advertising (PPC) – Use Sparingly and Strategically

Pay-Per-Click (PPC) advertising (like Google Ads or targeted social media ads) can play a role, but it’s often less critical for specialty pharmacy than organic strategies (content/SEO) and direct provider outreach.

  • Google Ads: Can be useful for targeting users searching for “specialty pharmacy [city]” or specific service-related terms (“copay assistance for [drug]”). Can be expensive. Requires careful keyword selection and negative keyword management (to avoid irrelevant clicks).
  • Social Media Ads: Platforms like Facebook and LinkedIn allow highly targeted advertising based on demographics, interests, job titles (for LinkedIn), or geographic location. Can be used for brand awareness or promoting specific content (e.g., an upcoming webinar).
  • Compliance Challenges: Advertising platforms have strict rules about healthcare advertising. You generally cannot target based on specific health conditions or make explicit claims about treating diseases. Focus ads on your services, expertise, and location. All ad copy must be carefully vetted for compliance.
  • ROI Focus: PPC requires careful tracking to ensure the cost per click/conversion is justified. It’s often better suited for larger, established SPs with significant marketing budgets.

For most new specialty pharmacies, the best initial digital marketing investments are a professional website, high-quality content creation, and robust SEO efforts.

34.4.3 Masterclass: Search Engine Optimization (SEO) for Visibility

Search Engine Optimization (SEO) is the practice of optimizing your website and online presence to rank higher in search engine results (primarily Google) for relevant keywords and phrases. Good SEO makes you visible to patients and providers actively searching for the solutions you offer. It’s not about “tricking” Google; it’s about making your website technically sound, rich with valuable content, and authoritative within your niche.

Step 1: Keyword Research – Understanding Search Intent

You need to know what terms your target audience actually types into Google. This is the foundation of SEO.

  • Brainstorm Seed Keywords: Start with the obvious: “specialty pharmacy,” your city/state, the disease states you serve (oncology, rheumatology), key drugs you dispense, services you offer (prior authorization help, financial assistance).
  • Use Keyword Research Tools:
    • Google Keyword Planner (Free with Google Ads account): Shows search volume and competition for keywords.
    • Google Trends (Free): Shows the relative popularity of search terms over time.
    • Paid Tools (Semrush, Ahrefs, Moz Keyword Explorer): Offer more detailed data, competitor analysis, and content ideas. Worth the investment if serious about SEO.
  • Identify Different Intent Types:
    • Informational: “what are side effects of Humira,” “how does Medicare Part D work” (Target with educational content).
    • Navigational: “[Your Pharmacy Name] phone number” (Ensure your contact info is easy to find).
    • Transactional/Commercial: “specialty pharmacy near me,” “referral form for [Your Pharmacy Name],” “cost of [Drug X]” (Target with service pages, location pages, contact info).
  • Focus on “Long-Tail” Keywords: These are longer, more specific phrases (e.g., “financial assistance for multiple sclerosis medication in Atlanta”). They have lower search volume but much higher conversion intent. A patient searching this is actively looking for help.
Example Keyword Strategy for an SP Focusing on RA in Atlanta:
  • Core Service: specialty pharmacy Atlanta, rheumatology pharmacy Atlanta
  • Informational (Patient): rheumatoid arthritis treatment options, Humira side effect management, Enbrel injection guide, copay assistance for RA biologics
  • Informational (Provider): prior authorization criteria for RA biologics, J-codes for rheumatology infusions, biosimilar updates for RA
  • Long-Tail: best specialty pharmacy for RA in Georgia, how to get help paying for Cimzia, local pharmacy with RA clinical pharmacist

Step 2: On-Page SEO – Optimizing Your Content

This involves optimizing the actual content and HTML code of your website pages to tell search engines what they are about.

  • Integrate Keywords Naturally: Don’t “stuff” keywords. Write high-quality, readable content for humans first, then ensure your target keywords appear naturally in:
    • Page Title (`` tag):</strong> The main title shown in browser tabs and search results. Crucial for SEO. (e.g., “Rheumatoid Arthritis Specialty Pharmacy Services | Atlanta | [Your Pharmacy Name]”).</li> <li><strong>Meta Description:</strong> The short snippet shown under the title in search results. Write compelling copy to encourage clicks.</li> <li><strong>Headings (`<h1>`, `<h2>`, etc.):</strong> Use keywords in your main headings and subheadings to structure content.</li> <li><strong>Body Text:</strong> Use keywords and related terms throughout your paragraphs naturally.</li> <li><strong>Image Alt Text:</strong> Describe your images using keywords (helps accessibility and image search).</li> <li><strong>URLs:</strong> Use short, descriptive URLs (e.g., `yourpharmacy.com/services/rheumatology`).</li> </ul> </li> <li><strong>Create High-Quality Content:</strong> Google prioritizes comprehensive, accurate, and engaging content that satisfies user intent. Your educational content (disease state pages, drug info, blog posts) is key here. Aim for longer, well-researched articles on important topics.</li> <li><strong>Internal Linking:</strong> Link relevant pages on your website together. E.g., link from your RA disease state page to your specific biologic drug pages and your financial assistance page. This helps users navigate and distributes “SEO authority.”</li> </ul> <h4 class="text-xl font-bold text-cps-secondary mt-8"><i class="fa-solid fa-map-location-dot mr-2"></i>Step 3: Local SEO – Winning Your Neighborhood</h4> <p class="mt-4">For independent or regional SPs, ranking in local search results (“specialty pharmacy near me”) is critical.</p> <ul class="list-disc pl-6 mt-4 space-y-3"> <li><strong>Google Business Profile (GBP):</strong> Claim and fully optimize your free GBP listing. This is what appears in Google Maps and the “Local Pack” in search results. <ul class="list-disc pl-6 mt-2"> <li>Ensure complete and accurate info: Name, Address, Phone (NAP), hours, website, services offered.</li> <li>Select correct categories (e.g., “Pharmacy,” potentially “Clinical Pharmacy”).</li> <li>Upload high-quality photos (your building, team, logo).</li> <li>Encourage (ethically!) satisfied patients and providers to leave Google reviews. Respond professionally to all reviews, positive and negative.</li> <li>Use Google Posts to share updates, content, or events.</li> </ul> </li> <li><strong>Consistent NAP Information:</strong> Ensure your business Name, Address, and Phone number are EXACTLY the same across your website, GBP, and all other online directories (e.g., Yelp, healthcare directories). Inconsistencies confuse search engines.</li> <li><strong>Local Citations:</strong> Get listed in relevant online directories (local chamber of commerce, healthcare-specific directories like Healthgrades, Vitals).</li> <li><strong>Location-Specific Website Content:</strong> Create pages targeting specific cities or regions you serve, mentioning local landmarks or provider groups if relevant (e.g., “Serving Oncology Patients in North Atlanta”).</li> </ul> <h4 class="text-xl font-bold text-cps-secondary mt-8"><i class="fa-solid fa-screwdriver-wrench mr-2"></i>Step 4: Technical SEO – The Website Foundation</h4> <p class="mt-4">This ensures your website is easily crawlable and indexable by search engines.</p> <ul class="list-disc pl-6 mt-4 space-y-2"> <li><strong>Mobile-Friendliness:</strong> Already mentioned, but critical for SEO. Google uses mobile-first indexing.</li> <li><strong>Site Speed:</strong> Use tools like Google PageSpeed Insights to identify and fix issues slowing down your site.</li> <li><strong>HTTPS Security:</strong> Your site must use HTTPS (SSL certificate) for security and SEO.</li> <li><strong>Clean Site Structure & Navigation:</strong> Make it easy for users and search engines to find pages. Use logical categories and clear menus.</li> <li><strong>XML Sitemap:</strong> Submit a sitemap to Google Search Console to help Google find all your pages.</li> <li><strong>Robots.txt:</strong> Use this file to tell search engines which pages not to crawl (if any).</li> </ul> <h4 class="text-xl font-bold text-cps-secondary mt-8"><i class="fa-solid fa-link mr-2"></i>Step 5: Off-Page SEO – Building Authority via Links</h4> <p class="mt-4">This involves earning links from other reputable websites to yours. Google views links as “votes of confidence,” boosting your site’s authority.</p> <ul class="list-disc pl-6 mt-4 space-y-2"> <li><strong>Focus on Quality, Not Quantity:</strong> One link from a major hospital website or a national disease foundation is worth more than 100 links from irrelevant directories.</li> <li><strong>How to Earn Links Ethically:</strong> <ul class="list-disc pl-6 mt-2"> <li>Create outstanding educational content that others *want* to link to as a resource.</li> <li>Get listed in relevant professional directories (some may require membership).</li> <li>Partner with local health organizations or patient advocacy groups.</li> <li>Issue press releases for significant company news (new accreditation, partnerships).</li> </ul> </li> <li><strong>What NOT to Do:</strong> Never buy links or engage in “link schemes.” Google penalizes these practices heavily.</li> </ul> <div class="insight-box mt-6"> <h5><i class="fa-solid fa-magnifying-glass-chart mr-2"></i>SEO Measurement & Tools</h5> <p>SEO is a long-term strategy. You need tools to track progress.</p> <ul class="list-disc pl-6 mt-2 space-y-1"> <li><strong>Google Analytics (Free):</strong> Track website traffic, user behavior, traffic sources (organic search, direct, referral), and content performance. Essential.</li> <li><strong>Google Search Console (Free):</strong> Monitor how Google sees your site, submit sitemaps, track keyword rankings, identify technical errors. Essential.</li> <li><strong>Rank Tracking Tools (Paid – Semrush, Ahrefs, Moz):</strong> Monitor your ranking positions for target keywords over time.</li> <li><strong>Local Rank Trackers (e.g., BrightLocal, Whitespark):</strong> Monitor your visibility in local map results.</li> </ul> <p class="mt-4"><strong>Key Metrics to Track:</strong> Organic traffic volume, keyword rankings for core terms, Google Business Profile views/clicks/calls, conversion actions (e.g., referral form submissions, phone calls originating from the website).</p> </div> </div> <div class="border-t border-cps-border p-8"> <h3 class="text-2xl font-bold text-cps-secondary">34.4.4 Masterclass: Outcome Storytelling – Proving Your Value with Data</h3> <p class="mt-4">In specialty pharmacy, your ultimate differentiator is not just your service, but the <strong>results</strong> you achieve. Outcome storytelling is the art and science of translating your operational and clinical performance data into compelling narratives that resonate with providers, payers, and even patients, proving your unique value proposition.</p> <p class="mt-4">Claims of “high-touch service” or “excellent adherence” are meaningless without data to back them up. Outcome data transforms subjective claims into objective proof, building credibility and justifying your pharmacy’s role (and potentially higher reimbursement) in the healthcare ecosystem.</p> <h4 class="text-xl font-bold text-cps-secondary mt-8"><i class="fa-solid fa-bullseye mr-2"></i>Step 1: Identifying Your Key Outcome Metrics</h4> <p class="mt-4">You can’t tell a story without data, and you can’t have data without measuring the right things. Your metrics should directly align with the value propositions you defined for each stakeholder.</p> <h5 class="text-lg font-bold text-cps-secondary mt-8 mb-4">Masterclass Table: Aligning Metrics with Stakeholder Value</h5> <table> <thead> <tr> <th>Stakeholder</th> <th>Their Core Value Driver</th> <th>Key Outcome Metrics to Track & Report</th> </tr> </thead> <tbody> <tr> <td><strong>Providers</strong></td> <td>Efficiency, Speed to Therapy, Clinical Support, Reduced Burden</td> <td><li><strong>Time to Fill (TTF):</strong> Avg. days from referral receipt to first dispense (broken down by New vs. Refill). <em>Target: <48h for clean New Starts.</em></li><li><strong>PA Approval Rate:</strong> % PAs approved on first submission.</li><li><strong>Call Center Metrics:</strong> Avg. speed to answer (provider line), Call abandonment rate.</li><li><strong>Clinical Intervention Rate:</strong> # of documented PharmD interventions per 100 patients (e.g., dose adjustments, side effect management).</li><li><strong>Provider Satisfaction Scores</strong> (if surveyed).</li></td> </tr> <tr> <td><strong>Patients</strong></td> <td>Affordability, Ease of Use, Clinical Support, Access</td> <td><li><strong>Average Patient Copay:</strong> $ amount after all assistance. <em>Target: As close to $0 as possible.</em></li><li><strong>% Patients Receiving Financial Aid:</strong> Demonstrates your effort.</li><li><strong>Medication Adherence Rate:</strong> Proportion of Days Covered (PDC) or Medication Possession Ratio (MPR). <em>Target: >90-95%.</em></li><li><strong>Patient Satisfaction Scores</strong> (e.g., Net Promoter Score – NPS).</li><li><strong>First-Call Resolution Rate:</strong> % patient issues resolved on the first call.</li></td> </tr> <tr> <td><strong>Payers</strong></td> <td>Cost Containment, Adherence (Star Ratings), Clinical Appropriateness, Waste Reduction</td> <td><li><strong>Medication Adherence Rate (PDC/MPR):</strong> Directly impacts Star Ratings.</li><li><strong>Split-Fill Program Savings:</strong> Estimated $ saved by preventing waste on discontinued therapies.</li><li><strong>Generic Dispensing Rate / Biosimilar Conversion Rate</strong> (where applicable).</li><li><strong>Clinical Outcomes (Disease-Specific):</strong> e.g., SVR rates for HCV, hospitalization/ER visit reduction (harder to track, often requires payer data partnership).</li><li><strong>PA Denial Rate (for inappropriate requests):</strong> Shows you are enforcing formulary.</li></td> </tr> </tbody> </table> <h4 class="text-xl font-bold text-cps-secondary mt-8"><i class="fa-solid fa-database mr-2"></i>Step 2: Building Your Data Infrastructure</h4> <p class="mt-4">Collecting reliable outcome data requires robust systems and consistent processes from Day 1. This cannot be an afterthought.</p> <ul class="list-disc pl-6 mt-4 space-y-3"> <li><strong>Pharmacy Dispensing System:</strong> Your core system (e.g., CPR+, PioneerRx, specialty-specific platforms) must be configured to accurately track key dates (referral received, BI complete, PA approved, dispense date) to calculate TTF. It must also accurately track dispense quantities and days’ supply for adherence calculations (PDC/MPR).</li> <li><strong>Clinical Documentation System/CRM:</strong> You need a system (can be part of your main system or separate) to document *every* clinical interaction: adherence calls, side effect interventions, counseling sessions, PA appeals efforts. This data is crucial for demonstrating your clinical value. Standardize documentation templates.</li> <li><strong>Financial Aid Tracking:</strong> Your system must track copay amounts, copay card usage, foundation grants applied for and received. This allows you to quantify the financial relief provided.</li> <li><strong>Patient Satisfaction Surveys:</strong> Implement a simple, regular survey process (e.g., using tools like SurveyMonkey, potentially integrated with your communications). Net Promoter Score (“How likely are you to recommend us?”) is a common, valuable metric.</li> <li><strong>Data Warehouse/Reporting Tools (As You Scale):</strong> Initially, you might pull reports directly from your dispensing system. As you grow, you may need a dedicated data warehouse and business intelligence tools (like Tableau or Power BI) to aggregate data from multiple sources and create sophisticated dashboards.</li> </ul> <div class="warning-box mt-6"> <h5><i class="fa-solid fa-clock-rotate-left mr-2"></i>Data Trap: Trying to Measure Everything Retroactively</h5> <p>If you don’t build the data collection processes from the start, trying to go back six months later and figure out your average time-to-fill or adherence rate from incomplete records is nearly impossible. Define your key metrics *before* you launch, configure your software to capture the necessary data points, and train your staff on the importance of consistent documentation *from Day 1*.</p> </div> <h4 class="text-xl font-bold text-cps-secondary mt-8"><i class="fa-solid fa-pen-to-square mr-2"></i>Step 3: Crafting the Narrative – From Numbers to Stories</h4> <p class="mt-4">Data alone can be dry. Outcome storytelling involves weaving your metrics into compelling narratives that highlight the <em>impact</em> of your work.</p> <ul class="list-disc pl-6 mt-4 space-y-3"> <li><strong>Visualize Your Data:</strong> Use simple charts and graphs (bar charts, line graphs, pie charts) to make trends and comparisons easy to understand. Your QBR report is a prime example.</li> <li><strong>Benchmark (Carefully):</strong> If industry benchmarks are available (e.g., average adherence rates for a specific drug), compare your performance. Showing you outperform the average is powerful. Be sure the comparison is fair (apples-to-apples).</li> <li><strong>Develop Case Studies (STAR Method):</strong> As mentioned before, translate individual patient “wins” (especially complex PA reversals or adherence breakthroughs) into concise, compelling stories using the Situation, Task, Action, Result framework. Always obtain HIPAA consent if any identifiable information is hinted at.</li> <li><strong>Create Aggregate Reports:</strong> Package your key metrics into professional-looking annual or semi-annual “Outcomes Reports.” These can be shared with payers during contract negotiations, with IDNs to demonstrate partnership value, and (in summary form) with prospective provider clients.</li> <li><strong>Integrate Proof Points into All Marketing:</strong> Don’t hide your outcomes data in reports. Sprinkle your key metrics throughout your website, service detail aids, and presentations. <ul class="list-disc pl-6 mt-2"> <li>Website Headline: “Achieving 96% Adherence for Our Rheumatology Patients.”</li> <li>Service Detail Aid Bullet Point: “Average Time-to-Fill Reduced by 5 Days vs. National SPs.”</li> <li>Presentation Slide: A graph showing improvement in patient satisfaction scores over time.</li> </ul> </li> <li><strong>Focus on the “So What?”:</strong> For every data point, answer the stakeholder’s implied question: “So what does this mean for me?” <ul class="list-disc pl-6 mt-2"> <li><em>Metric:</em> 96% Adherence. <em>So What (Provider)?</em> “Your patients achieve better clinical outcomes.” <em>So What (Payer)?</em> “Lower downstream medical costs and better Star Ratings.”</li> <li><em>Metric:</em> $10 Avg Copay. <em>So What (Patient)?</em> “Your treatment is affordable.” <em>So What (Provider)?</em> “Your patients won’t delay starting therapy due to cost.”</li> </ul> </li> </ul> <h4 class="text-xl font-bold text-cps-secondary mt-8"><i class="fa-solid fa-share-nodes mr-2"></i>Step 4: Sharing Your Story – Channels & Tactics</h4> <p class="mt-4">Once you have compelling outcome stories, you need to share them strategically.</p> <ul class="list-disc pl-6 mt-4 space-y-2"> <li><strong>Quarterly Business Reviews (QBRs):</strong> The primary channel for sharing account-specific data with providers.</li> <li><strong>Website “Outcomes” Section:</strong> Dedicate a section of your website to showcasing aggregate outcomes data, case studies (with consent), and testimonials.</li> <li><strong>Proposals & RFPs:</strong> Include robust outcomes data in any proposal to payers, health systems, or large provider groups. This is often the deciding factor.</li> <li><strong>Field Team Materials:</strong> Equip your Account Managers and Clinical Liaisons with updated outcomes summaries and case studies to share during their visits.</li> <li><strong>Content Marketing:</strong> Turn successful case studies into blog posts or articles (again, ensuring HIPAA compliance). Publish analyses of your aggregate data to demonstrate thought leadership.</li> <li><strong>Press Releases/Local Media:</strong> If you achieve significant milestones (e.g., exceptional adherence results, major cost savings demonstrated), consider sharing this via press releases to build local brand awareness and credibility.</li> </ul> </div> <div class="border-t border-cps-border p-8"> <h3 class="text-2xl font-bold text-cps-secondary">34.4.5 Compliance & Ethics in Digital Marketing and Outcome Reporting</h3> <p class="mt-4">As with all aspects of healthcare, your digital marketing and outcome reporting activities are subject to strict regulatory and ethical guidelines. Violations can lead to severe penalties, loss of licenses, and irreparable damage to your reputation.</p> <h4 class="text-xl font-bold text-cps-secondary mt-8"><i class="fa-solid fa-shield-halved mr-2"></i>HIPAA (Health Insurance Portability and Accountability Act)</h4> <p class="mt-4">This is paramount. Any communication or content that involves Protected Health Information (PHI) must comply with HIPAA’s privacy and security rules.</p> <ul class="list-disc pl-6 mt-4 space-y-2"> <li><strong>Website Forms:</strong> Any form collecting patient data (referrals, contact requests) must be encrypted (HTTPS) and hosted on secure servers. Consider using HIPAA-compliant form vendors.</li> <li><strong>Patient Portals:</strong> Require robust authentication, encryption, and audit trails.</li> <li><strong>Email:</strong> Standard email is NOT HIPAA-secure for PHI. Use secure messaging portals or encrypted email services for patient-specific communication initiated online.</li> <li><strong>Social Media:</strong> As discussed, avoid discussing patient specifics. Obtain explicit, written HIPAA authorization before using any patient testimonial or story, even if de-identified. The authorization must specify what information can be used, where, and for how long.</li> <li><strong>Outcome Reporting:</strong> Aggregate data (summarized across many patients) is generally okay. Individual case studies must be thoroughly de-identified OR require explicit patient authorization if any potentially identifying details remain.</li> <li><strong>Staff Training:</strong> All staff involved in digital communication must be trained on HIPAA rules regarding online interactions.</li> </ul> <h4 class="text-xl font-bold text-cps-secondary mt-8"><i class="fa-solid fa-scale-balanced mr-2"></i>FDA & FTC Regulations (Marketing & Advertising)</h4> <p class="mt-4">While you are primarily marketing your *services*, discussing specific drugs or therapies brings FDA (Food and Drug Administration) and FTC (Federal Trade Commission) rules into play.</p> <ul class="list-disc pl-6 mt-4 space-y-2"> <li><strong>Truthful & Non-Misleading:</strong> All claims about your services or outcomes must be accurate and substantiated by data. Avoid hyperbole (“Guaranteed Approvals!”).</li> <li><strong>Fair Balance (Drug Information):</strong> If creating content about specific drugs, you must present a fair balance of benefits and risks (side effects, warnings). Linking to the official prescribing information is good practice. You cannot promote off-label uses.</li> <li><strong>Testimonials:</strong> Patient testimonials must be genuine and represent typical results. If compensation was provided (even a gift card), it must be disclosed. Provider testimonials also require their explicit permission.</li> <li><strong>Endorsements:</strong> If collaborating with influencers or advocacy groups, FTC rules require clear disclosure of any material connection.</li> </ul> <h4 class="text-xl font-bold text-cps-secondary mt-8"><i class="fa-solid fa-heart-circle-check mr-2"></i>Ethical Considerations</h4> <p class="mt-4">Beyond legal requirements, ethical marketing builds long-term trust.</p> <ul class="list-disc pl-6 mt-4 space-y-2"> <li><strong>Transparency:</strong> Be clear about who you are and what you do. Avoid deceptive practices.</li> <li><strong>Patient Privacy:</strong> Go beyond HIPAA minimums; always err on the side of protecting patient privacy and dignity.</li> <li><strong>Value-Focused Content:</strong> Prioritize providing genuine educational value over aggressive sales tactics. Your content should empower, not just persuade.</li> <li><strong>Professionalism:</strong> Maintain a professional tone and appearance in all digital communications, reflecting the high-stakes nature of specialty care.</li> </ul> <div class="insight-box mt-6"> <h5><i class="fa-solid fa-check-double mr-2"></i>Founder’s Action: The Digital Compliance Checklist</h5> <p>Before launching any digital marketing initiative, review this checklist:</p> <ul class="list-disc pl-6 mt-2 space-y-1"> <li>Does our website use HTTPS?</li> <li>Are all online forms collecting PHI secure and HIPAA-compliant?</li> <li>Do we have a robust HIPAA authorization process for testimonials/case studies?</li> <li>Do we have a clear Social Media Policy and training for staff?</li> <li>Is our content accurate, balanced, and substantiated by data?</li> <li>Are we clearly disclosing any endorsements or compensated relationships?</li> <li>Have our key marketing materials been reviewed by compliance/legal counsel?</li> </ul> </div> <p class="mt-8">Your digital presence is a powerful extension of your pharmacy’s mission and values. By strategically leveraging digital marketing tactics like content creation and SEO, you can attract the right audiences and build credibility. By mastering outcome storytelling, you can definitively prove your value proposition. However, this power comes with significant responsibility. A rigorous commitment to compliance and ethical communication is essential to ensure your digital strategy enhances, rather than undermines, the trust you are working so hard to build.</p> </div> </div> </div> </section> </main> <script type="text/javascript" id="perfmatters-delayed-styles-js">!function(){const e=["keydown","mousemove","wheel","touchmove","touchstart","touchend"];function t(){document.querySelectorAll("link[data-pmdelayedstyle]").forEach(function(e){e.setAttribute("href",e.getAttribute("data-pmdelayedstyle"))}),e.forEach(function(e){window.removeEventListener(e,t,{passive:!0})})}e.forEach(function(e){window.addEventListener(e,t,{passive:!0})})}();</script></body> </html> <nav class="cps-nav" aria-label="Course navigation"> <div> <a class="cps-card cps-card--prev" href="https://pharmacystandards.org/casp/section-34-3-provider-education-and-field-development/"> <span class="cps-icon" aria-hidden="true">←</span> <span><strong>Previous</strong> 34.3 Provider Education and Field Development</span> </a> </div> <div> <a class="cps-card cps-card--next" href="https://pharmacystandards.org/casp/section-34-5-expansion-strategies-new-indications-new-markets-kpi-driven-growth/?from=1378836&cps_autocomplete=1" data-cps-next="1" data-cps-current-id="1378836" data-cps-current-done="0"> <span><strong>Next</strong> 34.5 Expansion Strategies: New Indications, New Markets, KPI-Driven Growth</span> <span class="cps-icon" aria-hidden="true">→</span> </a> </div> </nav> </div> </div> </div> </div></div></div><!-- #content --> <footer data-rocket-location-hash="63821ba01e0e7c9be31f99847f3afff9" itemscope="itemscope" itemtype="http://schema.org/WPFooter"> <div data-rocket-location-hash="769c981bb022783b181a5161189562cc" id="reign-copyright-text"> <div class="container"> <footer class="cpsf" aria-label="CPS site footer" role="contentinfo"> <!-- CTA band --> <div class="cpsf-cta"> <div class="cpsf-wrap"> <div class="cpsf-cta-card" role="region" aria-label="Get involved with CPS"> <div> <div class="cpsf-cta-title">Want to contribute or collaborate?</div> <div class="cpsf-cta-sub"> Partner with the Council on Pharmacy Standards to advance competence, ethics, and patient safety. </div> </div> <div class="cpsf-cta-actions"> <a class="cpsf-btn cpsf-btn-primary" href="/work-with-us/"> <i class="fa-solid fa-handshake-angle" aria-hidden="true"></i> <span>Join Us</span> </a> <a class="cpsf-btn cpsf-btn-ghost" href="/contact/"> <i class="fa-regular fa-envelope" aria-hidden="true"></i> <span>Contact Us</span> </a> </div> <!-- Newsletter removed --> </div> </div> </div> <!-- Columns --> <div class="cpsf-wrap"> <nav class="cpsf-cols" aria-label="Footer navigation"> <!-- Brand & Contact --> <section class="cpsf-brand" aria-labelledby="cpsf-brand-title"> <h4 id="cpsf-brand-title" class="sr-only">Council on Pharmacy Standards</h4> <div class="cpsf-logo"> <img src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='80px'%20height='0'%20viewBox='0%200%2080px%200'%3E%3C/svg%3E" width="80px" alt="CPS logo" class="perfmatters-lazy" data-src="https://pharmacystandards.org/wp-content/uploads/2025/08/CPS_LOGO_SMALL.png" /><noscript><img src="https://pharmacystandards.org/wp-content/uploads/2025/08/CPS_LOGO_SMALL.png" width="80px" alt="CPS logo"></noscript> <div class="cpsf-logotext"> <div class="cpsf-name">Council on Pharmacy Standards</div> <div style="font-size: 14px" class="cpsf-tagline">Advancing practice through credible standards</div> </div> </div> <p> CPS leads the nation in pharmacist certification, empowering a network of over 6,000 professionals through 62 specialized credentialing programs. </p> </section> <!-- Support --> <section aria-labelledby="cpsf-footer-support"> <h4 id="cpsf-footer-support">Support</h4> <ul> <li><a href="/contact/">Contact Us</a></li> <li><a href="/help-center/">FAQs</a></li> <li><a href="https://pharmacystandards.org/complaints-appeals/">Complaints & Appeals</a></li> <li><a href="https://pharmacystandards.org/accommodations/">Accessibility & Accommodations</a></li> <li><a href="/careers/">Careers</a></li> </ul> <div class="cpsf-docs"> <span class="cpsf-chip"> <i class="fa-regular fa-file-pdf" aria-hidden="true"></i> <a href="/pdf/testing-policy.pdf">Testing Guide (PDF)</a> </span> </div> </section> <!-- Programs --> <section aria-labelledby="cpsf-footer-programs"> <h4 id="cpsf-footer-programs">Programs</h4> <ul> <li><a href="/certification-catalog/">Certifications Catalog</a></li> <li><a href="/continuing-education/">Continuing Education Guide</a></li> <li><a href="/recognition-scholarships/">Recognition & Scholarships</a></li> <li><a href="/pharmacy-career-pathways-hub/">Provider Resources</a></li> <li><a href="/governance/">Governance & Impartiality</a></li> </ul> </section> <!-- Policies & Standards --> <section aria-labelledby="cpsf-footer-policies"> <h4 id="cpsf-footer-policies">Policies & Standards</h4> <ul> <li><a href="https://pharmacystandards.org/terms-conditions/">Terms & Conditions</a></li> <li><a href="https://pharmacystandards.org/technical-access-performance/">Technical Access & Performance</a></li> <li><a href="https://pharmacystandards.org/conflict-of-interest/">Conflict of Interest</a></li> <li><a href="https://pharmacystandards.org/candidate-code-of-conduct/">Candidate Code of Conduct</a></li> <li><a href="https://pharmacystandards.org/privacy-notice/">Privacy Notice</a></li> <li><a href="https://pharmacystandards.org/non-discrimination/">Non-Discrimination</a></li> </ul> </section> </nav> </div> <!-- Back to Top --> <a class="cpsf-to-top" href="#top" aria-label="Back to top"> <i class="fa-solid fa-arrow-up" aria-hidden="true"></i> <span class="sr-only">Back to top</span> </a> <!-- Bottom bar --> <div class="cpsf-bottom"> <div class="cpsf-bottom-inner"> <div>© 2025 Council on Pharmacy Standards. All rights reserved. | 65 Enterprise Blvd Suite 209, Atlanta, GA 30336</div> <!-- Micro-lockup (inline styles) --> <div class="cpsf-foundation-mini" aria-label="Supported by the CPS Foundation" style="align-items:center;gap:8px;opacity:.95"> <img src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='72'%20height='auto'%20viewBox='0%200%2072%20auto'%3E%3C/svg%3E" alt width="72" height="auto" style="height:22px;width:auto" class="perfmatters-lazy" data-src="https://pharmacystandards.org/wp-content/uploads/2025/09/CPS_Foundation.png" /><noscript><img src="https://pharmacystandards.org/wp-content/uploads/2025/09/CPS_Foundation.png" alt="" width="72" height="auto" loading="lazy" style="height:22px;width:auto"></noscript> <span style="font-size:13px;line-height:1.2">Supported by the CPS Foundation</span> </div> <div class="cpsf-legal-links"> <a href="https://pharmacystandards.org/privacy-notice/">Privacy</a> <a href="https://pharmacystandards.org/terms-conditions/">Terms</a> </div> <div class="cpsf-badge" title="Secure & Reliable">Trusted • Secure Access</div> </div> </div> </footer> </div> </div> </footer> </div><!-- #page --> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/wp-content\/uploads\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/reign-theme\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <div id="pum-1342696" role="dialog" aria-modal="false" class="pum pum-overlay pum-theme-7505 pum-theme-default-theme popmake-overlay click_open" data-popmake="{"id":1342696,"slug":"exam-faq","theme_id":7505,"cookies":[],"triggers":[{"type":"click_open","settings":{"extra_selectors":"","cookie_name":null}}],"mobile_disabled":null,"tablet_disabled":null,"meta":{"display":{"stackable":false,"overlay_disabled":false,"scrollable_content":false,"disable_reposition":false,"size":false,"responsive_min_width":false,"responsive_min_width_unit":false,"responsive_max_width":false,"responsive_max_width_unit":false,"custom_width":false,"custom_width_unit":false,"custom_height":false,"custom_height_unit":false,"custom_height_auto":false,"location":false,"position_from_trigger":false,"position_top":false,"position_left":false,"position_bottom":false,"position_right":false,"position_fixed":false,"animation_type":false,"animation_speed":false,"animation_origin":false,"overlay_zindex":false,"zindex":false},"close":{"text":false,"button_delay":false,"overlay_click":false,"esc_press":false,"f4_press":false},"click_open":[]}}"> <div data-rocket-location-hash="225ee7162a3270d8618269110ad18d52" id="popmake-1342696" class="pum-container popmake theme-7505 pum-responsive pum-responsive-medium responsive size-medium"> <div data-rocket-location-hash="03d41ddb61fac927a7b9b4ddf246b95b" class="pum-content popmake-content" tabindex="0"> <p><!-- Tailwind CSS --><br /> <script src="https://cdn.tailwindcss.com"></script><br /> <!-- Google Fonts: Inter --></p> <style> /* Custom styles for the page */<br /> body {<br /> font-family: 'Inter', sans-serif;<br /> background-color: #f8fafc; /* A light gray background */<br /> }<br /> /* Custom styling for the accordion transition */<br /> .accordion-content {<br /> max-height: 0;<br /> overflow: hidden;<br /> transition: max-height 0.3s ease-out;<br /> }<br /> /* Styling for the header gradient */<br /> .header-gradient {<br /> background: linear-gradient(to right, #059669, #047857);<br /> }<br /> /* Styling for the active accordion button */<br /> .accordion-button.active {<br /> background-color: #eefbf5;<br /> }<br /> </style> <p> </p> <p><!-- Main Content --></p> <p><main class="container mx-auto p-4 md:p-8"></main></p> <div class="bg-white rounded-xl shadow-lg overflow-hidden"> <p><!-- Section: Preparing for Your Exam --></p> <div class="p-6 border-b border-gray-200"> <h2 class="text-2xl font-bold text-gray-800">Preparing for Your Exam</h2> </div> <div class="divide-y divide-gray-200"><!-- FAQ Item --></p> <div class="faq-item"> <div class="flex justify-between items-center"><span class="text-lg font-semibold text-gray-700">What do I need to have for my exam?</span></div> <p> </p> <div class="accordion-content"> <div class="p-6 pt-0 text-gray-600"> <p class="mb-4">To ensure a smooth exam launch, please have the following items ready:</p> <ul class="list-disc list-inside space-y-2"> <li><strong>Valid Photo ID:</strong> One form of non-expired, government-issued photo identification (e.g., driver’s license, passport).</li> <li><strong>Technical Requirements:</strong> A working webcam and microphone, a strong and stable internet connection, and a compatible computer.</li> <li><strong>Environment:</strong> A quiet, private room with a hard surface to work on. Your desk or table must be clear of all other items.</li> <li><strong>Reflective Surfaces:</strong> Avoid rooms with cell phones or significant reflective surfaces.</li> </ul> </div> </div> </div> <p><!-- FAQ Item --></p> <div class="faq-item"> <div class="flex justify-between items-center"><span class="text-lg font-semibold text-gray-700">What time should I arrive for my exam?</span></div> <p> </p> <div class="accordion-content"> <div class="p-6 pt-0 text-gray-600"> <p>We recommend connecting to the exam platform 10-15 minutes before your scheduled start time. This will give you ample time to complete the identity verification and system check process without feeling rushed. The exam timer will not begin until after the exam has been officially launched.</p> </div> </div> </div> <p><!-- FAQ Item --></p> <div class="faq-item"> <div class="flex justify-between items-center"><span class="text-lg font-semibold text-gray-700">Where am I NOT allowed to take my exam?</span></div> <p> </p> <div class="accordion-content"> <div class="p-6 pt-0 text-gray-600"> <p class="mb-4">To ensure a secure exam environment, you may not test in certain locations. This is especially important for a high-stakes certification exam. You will NOT be permitted to test from:</p> <ul class="list-disc list-inside space-y-2"> <li>A bathroom/restroom</li> <li>A public space with other individuals like a coffee shop</li> <li>The outdoors</li> <li>A vehicle such as a car or boat</li> <li>An office with glass walls</li> </ul> <p class="mt-4">You should be seated at a hard surface like a desk or table, with your back to the main room entrance. Standing or lying down is not permitted.</p> </div> </div> </div> <p><!-- FAQ Item --></p> <div class="faq-item"> <div class="flex justify-between items-center"><span class="text-lg font-semibold text-gray-700">Can I have children or pets with me?</span></div> <p> </p> <div class="accordion-content"> <div class="p-6 pt-0 text-gray-600"> <p>No, you must be in a private, secure room alone. The presence of other people, including children, is not permitted and may result in the termination of your exam. While we love pets, they can be a distraction, so please ensure they are in a separate room during your exam session.</p> </div> </div> </div> </div> <p><!-- Section: During The Exam --></p> <div class="p-6 border-t border-b border-gray-200 mt-4"> <h2 class="text-2xl font-bold text-gray-800">During The Exam</h2> </div> <div class="divide-y divide-gray-200"><!-- FAQ Item --></p> <div class="faq-item"> <div class="flex justify-between items-center"><span class="text-lg font-semibold text-gray-700">What am I allowed and not allowed to do during my exam?</span></div> <p> </p> <div class="accordion-content"> <div class="p-6 pt-0 text-gray-600"> <p class="mb-4">To maintain the integrity of the certification process, the following actions and behaviors will be flagged and are not permitted:</p> <ul class="list-disc list-inside space-y-2"> <li><strong>Talking aloud:</strong> Unless you have an approved accommodation, talking or whispering is not permitted.</li> <li><strong>Being out of camera view:</strong> Your face must be clearly visible in the camera frame at all times.</li> <li><strong>Anyone else in your testing area:</strong> You must be alone in your room. No one else may enter or speak to you.</li> <li><strong>Looking off-screen:</strong> Your gaze should remain on the screen.</li> <li><strong>Using unauthorized materials:</strong> You may only use materials explicitly allowed.</li> <li><strong>Taking pictures or screenshots:</strong> This is strictly forbidden. Our system will detect and block such actions.</li> <li><strong>Copying and pasting:</strong> The system will not allow you to copy or paste any exam content.</li> <li><strong>Using a secondary monitor:</strong> Only one monitor is permitted.</li> </ul> </div> </div> </div> <p><!-- FAQ Item --></p> <div class="faq-item"> <div class="flex justify-between items-center"><span class="text-lg font-semibold text-gray-700">Can I have food or a drink during my exam?</span></div> <p> </p> <div class="accordion-content"> <div class="p-6 pt-0 text-gray-600"> <p>Only clear liquids in a clear container (e.g., a glass of water, a clear water bottle with no label) are permitted. Food, smoking, and vaping are not allowed as they can cause unnecessary distractions and noise.</p> </div> </div> </div> <p><!-- FAQ Item --></p> <div class="faq-item"> <div class="flex justify-between items-center"><span class="text-lg font-semibold text-gray-700">Are breaks allowed during my exam?</span></div> <p> </p> <div class="accordion-content"> <div class="p-6 pt-0 text-gray-600"> <p>No, breaks are not permitted during the exam for any reason.</p> </div> </div> </div> </div> <p><!-- Section: Accommodations & Technical Support --></p> <div class="p-6 border-t border-b border-gray-200 mt-4"> <h2 class="text-2xl font-bold text-gray-800">Accommodations & Technical Support</h2> </div> <div class="divide-y divide-gray-200"><!-- FAQ Item --></p> <div class="faq-item"> <div class="flex justify-between items-center"><span class="text-lg font-semibold text-gray-700">How do I receive accommodations for my exam?</span></div> <p> </p> <div class="accordion-content"> <div class="p-6 pt-0 text-gray-600"> <p class="mb-4">To receive accommodations, you must register your needs with the exam administrators. The Council will then submit an accommodation request on your behalf. We do not need any information about your disability. The Council needs to send us the following information about you:</p> <ul class="list-disc list-inside space-y-2"> <li>First and last name</li> <li>The email address you used to register for the exam</li> <li>Accommodation information (e.g., extra time, bathroom breaks, permitted use of a screen reader, etc.)</li> </ul> <p class="mt-4">This must be done prior to your exam day. If we do not have a record of your accommodations, it will delay your start process and may require rescheduling. If you have questions, please use our Contact Support form.</p> </div> </div> </div> <p><!-- FAQ Item --></p> <div class="faq-item"> <div class="flex justify-between items-center"><span class="text-lg font-semibold text-gray-700">What should I do if I’m disconnected from my exam?</span></div> <p> </p> <div class="accordion-content"> <div class="p-6 pt-0 text-gray-600"> <p>If you are disconnected, remain calm. Try to reconnect to the exam immediately. Follow the on-screen instructions to rejoin the session. If you are unable to reconnect within 5 minutes, please contact our technical support immediately for assistance. The support contact information is provided in your exam confirmation email.</p> </div> </div> </div> </div> <p><!-- Section: After The Exam --></p> <div class="p-6 border-t border-b border-gray-200 mt-4"> <h2 class="text-2xl font-bold text-gray-800">After The Exam</h2> </div> <div class="divide-y divide-gray-200"><!-- FAQ Item --></p> <div class="faq-item"> <div class="flex justify-between items-center"><span class="text-lg font-semibold text-gray-700">How do I access my exam results?</span></div> <p> </p> <div class="accordion-content"> <div class="p-6 pt-0 text-gray-600"> <p>Exam results are provided directly by the Council on Pharmacy Standards, not by the proctoring service.</p> </div> </div> </div> </div> </div> <p> </p> <p><script> // JavaScript for accordion functionality document.addEventListener('DOMContentLoaded', function () { const accordionButtons = document.querySelectorAll('.accordion-button');</p> <p> accordionButtons.forEach(button => { button.addEventListener('click', () => { // Toggle active class for styling const wasActive = button.classList.contains('active');</p> <p> // Close all other accordions accordionButtons.forEach(btn => { if (btn !== button) { btn.classList.remove('active'); btn.nextElementSibling.style.maxHeight = null; btn.querySelector('svg').style.transform = 'rotate(0deg)'; } });</p> <p> // Toggle the clicked accordion if (!wasActive) { button.classList.add('active'); const content = button.nextElementSibling; content.style.maxHeight = content.scrollHeight + "px"; button.querySelector('svg').style.transform = 'rotate(180deg)'; } else { button.classList.remove('active'); const content = button.nextElementSibling; content.style.maxHeight = null; button.querySelector('svg').style.transform = 'rotate(0deg)'; } }); }); }); </script></p> <p> </p> </div> <button type="button" class="pum-close popmake-close" aria-label="Close"> × </button> </div> </div> <div id="pum-1334680" role="dialog" aria-modal="false" class="pum pum-overlay pum-theme-7505 pum-theme-default-theme popmake-overlay click_open" data-popmake="{"id":1334680,"slug":"scheduler","theme_id":7505,"cookies":[],"triggers":[{"type":"click_open","settings":{"extra_selectors":"","cookie_name":null}}],"mobile_disabled":null,"tablet_disabled":null,"meta":{"display":{"stackable":false,"overlay_disabled":false,"scrollable_content":false,"disable_reposition":false,"size":false,"responsive_min_width":false,"responsive_min_width_unit":false,"responsive_max_width":false,"responsive_max_width_unit":false,"custom_width":false,"custom_width_unit":false,"custom_height":false,"custom_height_unit":false,"custom_height_auto":false,"location":false,"position_from_trigger":false,"position_top":false,"position_left":false,"position_bottom":false,"position_right":false,"position_fixed":false,"animation_type":false,"animation_speed":false,"animation_origin":false,"overlay_zindex":false,"zindex":false},"close":{"text":false,"button_delay":false,"overlay_click":false,"esc_press":false,"f4_press":false},"click_open":[]}}"> <div data-rocket-location-hash="400ac13f4a97c1042ec68067065f1361" id="popmake-1334680" class="pum-container popmake theme-7505 pum-responsive pum-responsive-medium responsive size-medium"> <div data-rocket-location-hash="c5d16927c51f78cf08a76ddc9b99384d" class="pum-content popmake-content" tabindex="0"> <p>[ameliabooking service=1]</p> </div> <button type="button" class="pum-close popmake-close" aria-label="Close"> × </button> </div> </div> <div id="pum-1315235" role="dialog" aria-modal="false" class="pum pum-overlay pum-theme-7505 pum-theme-default-theme popmake-overlay click_open" data-popmake="{"id":1315235,"slug":"certification-catalog","theme_id":7505,"cookies":[],"triggers":[{"type":"click_open","settings":{"extra_selectors":"","cookie_name":null}}],"mobile_disabled":null,"tablet_disabled":null,"meta":{"display":{"stackable":false,"overlay_disabled":false,"scrollable_content":false,"disable_reposition":false,"size":false,"responsive_min_width":false,"responsive_min_width_unit":false,"responsive_max_width":false,"responsive_max_width_unit":false,"custom_width":false,"custom_width_unit":false,"custom_height":false,"custom_height_unit":false,"custom_height_auto":false,"location":false,"position_from_trigger":false,"position_top":false,"position_left":false,"position_bottom":false,"position_right":false,"position_fixed":false,"animation_type":false,"animation_speed":false,"animation_origin":false,"overlay_zindex":false,"zindex":false},"close":{"text":false,"button_delay":false,"overlay_click":false,"esc_press":false,"f4_press":false},"click_open":[]}}"> <div data-rocket-location-hash="25b383a9c33b8f0d7595731bcd244a1d" id="popmake-1315235" class="pum-container popmake theme-7505 pum-responsive pum-responsive-medium responsive size-medium"> <div data-rocket-location-hash="15b42ea9a3d990db4712e8f1f9a6ecd0" class="pum-content popmake-content" tabindex="0"> <div class="certification-catalog-popup"> <div id="category-ops" class="catalog-category-group"> <h2 style="display: flex; align-items: center; gap: 12px; line-height: 23px; font-size: 26px;"><img decoding="async" style="width: 48px; height: 48px;" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='0'%20height='0'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="Operations Icon" class="perfmatters-lazy" data-src="/wp-content/uploads/2025/08/icon-17.svg" /><noscript><img decoding="async" style="width: 48px; height: 48px;" src="/wp-content/uploads/2025/08/icon-17.svg" alt="Operations Icon" /></noscript><br /> Pharmacy Operations & Administration</h2> <ul> <li><a href="/certified-pharmacy-operations-manager-cpom/">Certified Pharmacy Operations Manager (CPOM)</a></li> <li><a href="/certified-pharmacy-billing-reimbursement-specialist-cpbrs/">Certified Pharmacy Billing & Reimbursement Specialist (CPBRS)</a></li> <li><a href="/certified-pharmacy-supply-chain-manager-cpscm/">Certified Pharmacy Supply Chain Manager (CPSCM)</a></li> <li><a href="/certified-prior-authorization-pharmacist-cpap/">Certified Prior Authorization Pharmacist (CPAP)</a></li> <li><a href="/certified-pharmacy-policy-analyst-cppa/">Certified Pharmacy Policy Analyst (CPPA)</a></li> <li><a href="/certified-managed-care-pharmacist-cmcp/">Certified Managed Care Pharmacist (CMCP)</a></li> <li><a href="/certified-formulary-strategy-pharmacist-cfsp/">Certified Formulary Strategy Pharmacist (CFSP)</a></li> <li><a href="/certified-medical-affairs-pharmacist-cmap/">Certified Medical Affairs Pharmacist (CMAP)</a></li> </ul> </div> <div id="category-care" class="catalog-category-group"> <h2 style="display: flex; align-items: center; gap: 12px; line-height: 23px; font-size: 26px;"><img decoding="async" style="width: 48px; height: 48px;" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='0'%20height='0'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="Patient Care Icon" class="perfmatters-lazy" data-src="/wp-content/uploads/2025/08/icon-16.svg" /><noscript><img decoding="async" style="width: 48px; height: 48px;" src="/wp-content/uploads/2025/08/icon-16.svg" alt="Patient Care Icon" /></noscript><br /> Direct Patient Care & Clinical Specialties</h2> <ul> <li><a href="/certified-deprescribing-pharmacist-cdp/">Certified Deprescribing Pharmacist (CDP)</a></li> <li><a href="/certified-hormone-therapy-pharmacist-chtp/">Certified Hormone Therapy Pharmacist (CHTP)</a></li> <li><a href="/certified-mens-health-pharmacist-cmhp/">Certified Men’s Health Pharmacist (CMHP)</a></li> <li><a href="/certified-womens-health-pharmacist-cwhp/">Certified Women’s Health Pharmacist (CWHP)</a></li> <li><a href="/certified-wellness-supplement-pharmacist-cwsp/">Certified Wellness & Supplement Pharmacist (CWSP)</a></li> <li><a href="/certified-integrative-pharmacy-specialist-cips/">Certified Integrative Pharmacy Specialist (CIPS)</a></li> <li><a href="/certified-population-health-pharmacy-analyst-cphpa/">Certified Population Health Pharmacy Analyst (CPHPA)</a></li> <li><a href="/certified-public-health-pharmacist-cphp/">Certified Public Health Pharmacist (CPHP)</a></li> <li><a href="/certified-pain-management-pharmacist-cpmp/">Certified Pain Management Pharmacist (CPMP)</a></li> <li><a href="/certified-transitions-of-care-specialist-ctcs/">Certified Transitions of Care Specialist (CTCS)</a></li> <li><a href="/certified-medication-reconciliation-pharmacist-cmrp/">Certified Medication Reconciliation Pharmacist (CMRP)</a></li> <li><a href="/certified-renal-pharmacotherapy-specialist-crps/">Certified Renal Pharmacotherapy Specialist (CRPS)</a></li> <li><a href="/certified-behavioral-health-pharmacist-cbhp/">Certified Behavioral Health Pharmacist (CBHP)</a></li> <li><a href="/certified-pharmacist-in-substance-use-disorders-cpsud/">Certified Pharmacist in Substance Use Disorders (CPSUD)</a></li> <li><a href="/certified-home-infusion-pharmacist-chip/">Certified Home Infusion Pharmacist (CHIP)</a></li> <li><a href="/certified-non-sterile-compounding-pharmacist-cnscp/">Certified Non-Sterile Compounding Pharmacist (CNSCP)</a></li> <li><a href="/certified-sterile-compounding-pharmacist-cscp/">Certified Sterile Compounding Pharmacist (CSCP)</a></li> <li><a href="/certified-veterinary-compounding-specialist-cvcs/">Certified Veterinary Compounding Specialist (CVCS)</a></li> <li><a href="/certified-surgical-pharmacy-specialist-csps/">Certified Surgical Pharmacy Specialist (CSPS)</a></li> <li><a href="/certified-collaborative-practice-pharmacist-ccpp/">Certified Collaborative Practice Pharmacist (CCPP)</a></li> <li><a href="/certified-cardiometabolic-care-pharmacist-cccp/">Certified Cardiometabolic Care Pharmacist (CCCP)</a></li> <li><a href="/certified-investigational-drug-services-pharmacist-cidsp/">Certified Investigational Drug Services Pharmacist (CIDSP)</a></li> <li><a href="/certified-clinical-trials-pharmacist-cctp/">Certified Clinical Trials Pharmacist (CCTP)</a></li> </ul> </div> <div id="category-tech" class="catalog-category-group"> <h2 style="display: flex; align-items: center; gap: 12px; line-height: 23px; font-size: 26px;"><img decoding="async" style="width: 48px; height: 48px;" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='0'%20height='0'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="Technology Icon" class="perfmatters-lazy" data-src="/wp-content/uploads/2025/08/icon-15.svg" /><noscript><img decoding="async" style="width: 48px; height: 48px;" src="/wp-content/uploads/2025/08/icon-15.svg" alt="Technology Icon" /></noscript><br /> Pharmacy Technology & Precision Medicine</h2> <ul> <li><a href="/certified-telepharmacy-pharmacist-ctpp/">Certified Telepharmacy Pharmacist (CTPP)</a></li> <li><a href="/certified-ai-enhanced-pharmacy-strategist-caeps/">Certified AI-Enhanced Pharmacy Strategist (CAEPS)</a></li> <li><a href="/certified-remote-monitoring-pharmacist-crmp/">Certified Remote Monitoring Pharmacist (CRMP)</a></li> <li><a href="/certified-remote-order-verification-pharmacist-crovp/">Certified Remote Order Verification Pharmacist (CROVP)</a></li> <li><a href="/certified-point-of-care-testing-pharmacist-cpoctp/">Certified Point-of-Care Testing Pharmacist (CPOCTP)</a></li> <li><a href="/certified-digital-therapeutics-specialist-cdts/">Certified Digital Therapeutics Specialist (CDTS)</a></li> <li><a href="/certified-pharmacy-informatics-analyst-cpia/">Certified Pharmacy Informatics Analyst (CPIA)</a></li> <li><a href="/certified-ehr-optimization-pharmacist-ceop/">Certified EHR Optimization Pharmacist (CEOP)</a></li> <li><a href="/certified-pharmacogenomics-pharmacist-cpxp/">Certified Pharmacogenomics Pharmacist (CPxP)</a></li> <li><a href="/certified-medical-cannabis-pharmacist-cmcp/">Certified Medical Cannabis Pharmacist (CMCP)</a></li> <li><a href="/certified-psychedelic-therapy-pharmacist-cptp/">Certified Psychedelic Therapy Pharmacist (CPTP)</a></li> <li><a href="/certified-gene-therapy-pharmacist-cgtp/">Certified Gene Therapy Pharmacist (CGTP)</a></li> <li><a href="/certified-biosimilar-biologic-specialist-cbbs/">Certified Biosimilar & Biologic Specialist (CBBS)</a></li> <li><a href="/certified-rare-disease-pharmacist-crdp/">Certified Rare Disease Pharmacist (CRDP)</a></li> </ul> </div> <div id="category-gov" class="catalog-category-group"> <h2 style="display: flex; align-items: center; gap: 12px; line-height: 23px; font-size: 26px;"><img decoding="async" style="width: 48px; height: 48px;" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='0'%20height='0'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="Governance Icon" class="perfmatters-lazy" data-src="/wp-content/uploads/2025/08/icon-14.svg" /><noscript><img decoding="async" style="width: 48px; height: 48px;" src="/wp-content/uploads/2025/08/icon-14.svg" alt="Governance Icon" /></noscript><br /> Governance, Risk & Compliance</h2> <ul> <li><a href="/certified-pharmacy-compliance-officer-cpco/">Certified Pharmacy Compliance Officer (CPCO)</a></li> <li><a href="/certified-dea-compliance-pharmacist-cdcp/">Certified DEA Compliance Pharmacist (CDCP)</a></li> <li><a href="/certified-pharmacy-law-ethics-specialist-cples/">Certified Pharmacy Law & Ethics Specialist (CPLES)</a></li> <li><a href="/certified-medication-safety-officer-cmso/">Certified Medication Safety Officer (CMSO)</a></li> <li><a href="/certified-pharmacy-audit-specialist-cpas/">Certified Pharmacy Audit Specialist (CPAS)</a></li> <li><a href="/certified-pharmacy-data-privacy-officer-cpdpo/">Certified Pharmacy Data Privacy Officer (CPDPO)</a></li> <li><a href="/certified-hazardous-drug-handling-pharmacist-chdhp/">Certified Hazardous Drug Handling Pharmacist (CHDHP)</a></li> <li><a href="/certified-usp-800-compliance-officer-cuco/">Certified USP 800 Compliance Officer (CUCO)</a></li> <li><a href="/certified-pharmacy-regulatory-specialist-cprs/">Certified Pharmacy Regulatory Specialist (CPRS)</a></li> <li><a href="/certified-regulatory-affairs-pharmacist-cras/">Certified Regulatory Affairs Specialist (CRAS)</a></li> <li><a href="/certified-pharmacovigilance-safety-officer-cpso/">Certified Pharmacovigilance & Safety Officer (CPSO)</a></li> <li><a href="/certified-compliance-pharmacist-340b-focus-ccp-340b/">Certified Compliance Pharmacist – 340B Focus (CCP-340B)</a></li> <li><a href="/certified-prior-authorization-pharmacist-cpap/">Certified Prior Authorization Pharmacist (CPAP)</a></li> </ul> </div> </div> </div> <button type="button" class="pum-close popmake-close" aria-label="Close"> × </button> </div> </div> <div id="pum-1063754" role="dialog" aria-modal="false" class="pum pum-overlay pum-theme-7505 pum-theme-default-theme popmake-overlay click_open" data-popmake="{"id":1063754,"slug":"quick-access-menu","theme_id":7505,"cookies":[],"triggers":[{"type":"click_open","settings":{"extra_selectors":"","cookie_name":null}}],"mobile_disabled":null,"tablet_disabled":null,"meta":{"display":{"stackable":false,"overlay_disabled":false,"scrollable_content":false,"disable_reposition":false,"size":false,"responsive_min_width":false,"responsive_min_width_unit":false,"responsive_max_width":false,"responsive_max_width_unit":false,"custom_width":false,"custom_width_unit":false,"custom_height":false,"custom_height_unit":false,"custom_height_auto":false,"location":false,"position_from_trigger":false,"position_top":false,"position_left":false,"position_bottom":false,"position_right":false,"position_fixed":false,"animation_type":false,"animation_speed":false,"animation_origin":false,"overlay_zindex":false,"zindex":false},"close":{"text":false,"button_delay":false,"overlay_click":false,"esc_press":false,"f4_press":false},"click_open":[]}}"> <div data-rocket-location-hash="82221c200662b49bbe6995343b432057" id="popmake-1063754" class="pum-container popmake theme-7505 pum-responsive pum-responsive-medium responsive size-medium"> <div data-rocket-location-hash="22f03ea67a313618cfa5830c192fcb11" class="pum-content popmake-content" tabindex="0"> </div> <button type="button" class="pum-close popmake-close" aria-label="Close"> × </button> </div> </div> <div id="pum-7514" role="dialog" aria-modal="false" class="pum pum-overlay pum-theme-7505 pum-theme-default-theme popmake-overlay click_open" data-popmake="{"id":7514,"slug":"report-issue","theme_id":7505,"cookies":[],"triggers":[{"type":"click_open","settings":{"extra_selectors":"","cookie_name":null}}],"mobile_disabled":null,"tablet_disabled":null,"meta":{"display":{"stackable":false,"overlay_disabled":false,"scrollable_content":false,"disable_reposition":false,"size":false,"responsive_min_width":false,"responsive_min_width_unit":false,"responsive_max_width":false,"responsive_max_width_unit":false,"custom_width":false,"custom_width_unit":false,"custom_height":false,"custom_height_unit":false,"custom_height_auto":false,"location":false,"position_from_trigger":false,"position_top":false,"position_left":false,"position_bottom":false,"position_right":false,"position_fixed":false,"animation_type":false,"animation_speed":false,"animation_origin":false,"overlay_zindex":false,"zindex":false},"close":{"text":false,"button_delay":false,"overlay_click":false,"esc_press":false,"f4_press":false},"click_open":[]}}"> <div data-rocket-location-hash="a4603e3fa77f44ee4f07e92a57c3e440" id="popmake-7514" class="pum-container popmake theme-7505 pum-responsive pum-responsive-medium responsive size-medium"> <div data-rocket-location-hash="43e01e40a96a40d907ad6f9a9881bd03" class="pum-content popmake-content" tabindex="0"> <p>You must log in.</p> </div> <button type="button" class="pum-close popmake-close" aria-label="Close"> × </button> </div> </div> <div id="pum-1127653" role="dialog" aria-modal="false" class="pum pum-overlay pum-theme-7505 pum-theme-default-theme popmake-overlay click_open" data-popmake="{"id":1127653,"slug":"contact-us","theme_id":7505,"cookies":[],"triggers":[{"type":"click_open","settings":{"extra_selectors":"","cookie_name":null}}],"mobile_disabled":null,"tablet_disabled":null,"meta":{"display":{"stackable":false,"overlay_disabled":false,"scrollable_content":false,"disable_reposition":false,"size":false,"responsive_min_width":false,"responsive_min_width_unit":false,"responsive_max_width":false,"responsive_max_width_unit":false,"custom_width":false,"custom_width_unit":false,"custom_height":false,"custom_height_unit":false,"custom_height_auto":false,"location":false,"position_from_trigger":false,"position_top":false,"position_left":false,"position_bottom":false,"position_right":false,"position_fixed":false,"animation_type":false,"animation_speed":false,"animation_origin":false,"overlay_zindex":false,"zindex":false},"close":{"text":false,"button_delay":false,"overlay_click":false,"esc_press":false,"f4_press":false},"click_open":[]}}"> <div data-rocket-location-hash="a1180db4efb26b3c5879ad96f0d33a27" id="popmake-1127653" class="pum-container popmake theme-7505 pum-responsive pum-responsive-medium responsive size-medium"> <div data-rocket-location-hash="d4f1d43b1695cd008e30ed4e01526b55" class="pum-content popmake-content" tabindex="0"> <div class='gf_browser_unknown gform_wrapper gform-theme gform-theme--foundation gform-theme--framework gform-theme--orbital' data-form-theme='orbital' data-form-index='0' id='gform_wrapper_2' ><style>#gform_wrapper_2[data-form-index="0"].gform-theme,[data-parent-form="2_0"]{--gf-color-primary: #204ce5;--gf-color-primary-rgb: 32, 76, 229;--gf-color-primary-contrast: #fff;--gf-color-primary-contrast-rgb: 255, 255, 255;--gf-color-primary-darker: #001AB3;--gf-color-primary-lighter: #527EFF;--gf-color-secondary: #fff;--gf-color-secondary-rgb: 255, 255, 255;--gf-color-secondary-contrast: #112337;--gf-color-secondary-contrast-rgb: 17, 35, 55;--gf-color-secondary-darker: #F5F5F5;--gf-color-secondary-lighter: #FFFFFF;--gf-color-out-ctrl-light: rgba(17, 35, 55, 0.1);--gf-color-out-ctrl-light-rgb: 17, 35, 55;--gf-color-out-ctrl-light-darker: rgba(104, 110, 119, 0.35);--gf-color-out-ctrl-light-lighter: #F5F5F5;--gf-color-out-ctrl-dark: #585e6a;--gf-color-out-ctrl-dark-rgb: 88, 94, 106;--gf-color-out-ctrl-dark-darker: #112337;--gf-color-out-ctrl-dark-lighter: rgba(17, 35, 55, 0.65);--gf-color-in-ctrl: #fff;--gf-color-in-ctrl-rgb: 255, 255, 255;--gf-color-in-ctrl-contrast: #112337;--gf-color-in-ctrl-contrast-rgb: 17, 35, 55;--gf-color-in-ctrl-darker: #F5F5F5;--gf-color-in-ctrl-lighter: #FFFFFF;--gf-color-in-ctrl-primary: #204ce5;--gf-color-in-ctrl-primary-rgb: 32, 76, 229;--gf-color-in-ctrl-primary-contrast: #fff;--gf-color-in-ctrl-primary-contrast-rgb: 255, 255, 255;--gf-color-in-ctrl-primary-darker: #001AB3;--gf-color-in-ctrl-primary-lighter: #527EFF;--gf-color-in-ctrl-light: rgba(17, 35, 55, 0.1);--gf-color-in-ctrl-light-rgb: 17, 35, 55;--gf-color-in-ctrl-light-darker: rgba(104, 110, 119, 0.35);--gf-color-in-ctrl-light-lighter: #F5F5F5;--gf-color-in-ctrl-dark: #585e6a;--gf-color-in-ctrl-dark-rgb: 88, 94, 106;--gf-color-in-ctrl-dark-darker: #112337;--gf-color-in-ctrl-dark-lighter: rgba(17, 35, 55, 0.65);--gf-radius: 3px;--gf-font-size-secondary: 14px;--gf-font-size-tertiary: 13px;--gf-icon-ctrl-number: url("data:image/svg+xml,%3Csvg width='8' height='14' viewBox='0 0 8 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M4 0C4.26522 5.96046e-08 4.51957 0.105357 4.70711 0.292893L7.70711 3.29289C8.09763 3.68342 8.09763 4.31658 7.70711 4.70711C7.31658 5.09763 6.68342 5.09763 6.29289 4.70711L4 2.41421L1.70711 4.70711C1.31658 5.09763 0.683417 5.09763 0.292893 4.70711C-0.0976311 4.31658 -0.097631 3.68342 0.292893 3.29289L3.29289 0.292893C3.48043 0.105357 3.73478 0 4 0ZM0.292893 9.29289C0.683417 8.90237 1.31658 8.90237 1.70711 9.29289L4 11.5858L6.29289 9.29289C6.68342 8.90237 7.31658 8.90237 7.70711 9.29289C8.09763 9.68342 8.09763 10.3166 7.70711 10.7071L4.70711 13.7071C4.31658 14.0976 3.68342 14.0976 3.29289 13.7071L0.292893 10.7071C-0.0976311 10.3166 -0.0976311 9.68342 0.292893 9.29289Z' fill='rgba(17, 35, 55, 0.65)'/%3E%3C/svg%3E");--gf-icon-ctrl-select: url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.292893 0.292893C0.683417 -0.097631 1.31658 -0.097631 1.70711 0.292893L5 3.58579L8.29289 0.292893C8.68342 -0.0976311 9.31658 -0.0976311 9.70711 0.292893C10.0976 0.683417 10.0976 1.31658 9.70711 1.70711L5.70711 5.70711C5.31658 6.09763 4.68342 6.09763 4.29289 5.70711L0.292893 1.70711C-0.0976311 1.31658 -0.0976311 0.683418 0.292893 0.292893Z' fill='rgba(17, 35, 55, 0.65)'/%3E%3C/svg%3E");--gf-icon-ctrl-search: url("data:image/svg+xml,%3Csvg width='640' height='640' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M256 128c-70.692 0-128 57.308-128 128 0 70.691 57.308 128 128 128 70.691 0 128-57.309 128-128 0-70.692-57.309-128-128-128zM64 256c0-106.039 85.961-192 192-192s192 85.961 192 192c0 41.466-13.146 79.863-35.498 111.248l154.125 154.125c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0L367.248 412.502C335.862 434.854 297.467 448 256 448c-106.039 0-192-85.962-192-192z' fill='rgba(17, 35, 55, 0.65)'/%3E%3C/svg%3E");--gf-label-space-y-secondary: var(--gf-label-space-y-md-secondary);--gf-ctrl-border-color: #686e77;--gf-ctrl-size: var(--gf-ctrl-size-md);--gf-ctrl-label-color-primary: #112337;--gf-ctrl-label-color-secondary: #112337;--gf-ctrl-choice-size: var(--gf-ctrl-choice-size-md);--gf-ctrl-checkbox-check-size: var(--gf-ctrl-checkbox-check-size-md);--gf-ctrl-radio-check-size: var(--gf-ctrl-radio-check-size-md);--gf-ctrl-btn-font-size: var(--gf-ctrl-btn-font-size-md);--gf-ctrl-btn-padding-x: var(--gf-ctrl-btn-padding-x-md);--gf-ctrl-btn-size: var(--gf-ctrl-btn-size-md);--gf-ctrl-btn-border-color-secondary: #686e77;--gf-ctrl-file-btn-bg-color-hover: #EBEBEB;--gf-field-img-choice-size: var(--gf-field-img-choice-size-md);--gf-field-img-choice-card-space: var(--gf-field-img-choice-card-space-md);--gf-field-img-choice-check-ind-size: var(--gf-field-img-choice-check-ind-size-md);--gf-field-img-choice-check-ind-icon-size: var(--gf-field-img-choice-check-ind-icon-size-md);--gf-field-pg-steps-number-color: rgba(17, 35, 55, 0.8);}</style><div id='gf_2' class='gform_anchor' tabindex='-1'></div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_2' id='gform_2' action='/casp/section-34-4-digital-marketing-seo-and-outcome-storytelling/#gf_2' data-formid='2' novalidate> <input type='hidden' class='gforms-pum' value='{"closepopup":false,"closedelay":0,"openpopup":false,"openpopup_id":0}' /> <div class='gform-body gform_body'><div id='gform_fields_2' class='gform_fields top_label form_sublabel_above description_below validation_below'><div id="field_2_7" class="gfield gfield--type-section gfield--input-type-section gsection field_sublabel_above gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><h3 class="gsection_title">Choose a Topic</h3></div><div id="field_2_11" class="gfield gfield--type-select gfield--input-type-select gfield--width-full field_sublabel_above gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_2_11'>Question/Issue Topic</label><div class='ginput_container ginput_container_select'><select name='input_11' id='input_2_11' class='medium gfield_select' aria-invalid="false" ><option value='' selected='selected' class='gf_placeholder'>Select</option><option value='General Inquiry' >General Inquiry</option><option value='Technical Support' >Technical Support</option><option value='Billing / Payment Issue' >Billing / Payment Issue</option><option value='Course Access Problem' >Course Access Problem</option><option value='Question Bank Feedback' >Question Bank Feedback</option><option value='Report an Error or Bug' >Report an Error or Bug</option><option value='Account Login Issues' >Account Login Issues</option><option value='Pre-Sale Question' >Pre-Sale Question</option><option value='Partnership / Business Inquiry' >Partnership / Business Inquiry</option><option value='Other' >Other</option></select></div></div><fieldset id="field_2_1" class="gfield gfield--type-name gfield--input-type-name gfield_contains_required field_sublabel_above gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><legend class='gfield_label gform-field-label gfield_label_before_complex' >Your Name<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><div class='ginput_complex ginput_container ginput_container--name no_prefix has_first_name no_middle_name has_last_name no_suffix gf_name_has_2 ginput_container_name gform-grid-row' id='input_2_1'> <span id='input_2_1_3_container' class='name_first gform-grid-col gform-grid-col--size-auto' > <label for='input_2_1_3' class='gform-field-label gform-field-label--type-sub '>First</label> <input type='text' name='input_1.3' id='input_2_1_3' value='' aria-required='true' autocomplete="given-name" /> </span> <span id='input_2_1_6_container' class='name_last gform-grid-col gform-grid-col--size-auto' > <label for='input_2_1_6' class='gform-field-label gform-field-label--type-sub '>Last</label> <input type='text' name='input_1.6' id='input_2_1_6' value='' aria-required='true' autocomplete="family-name" /> </span> </div></fieldset><div id="field_2_2" class="gfield gfield--type-email gfield--input-type-email gfield--width-half gfield_contains_required field_sublabel_above gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_2_2'>Your Email Address<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label><div class='ginput_container ginput_container_email'> <input name='input_2' id='input_2_2' type='email' value='' class='large' aria-required="true" aria-invalid="false" /> </div></div><div id="field_2_5" class="gfield gfield--type-phone gfield--input-type-phone gfield--width-half field_sublabel_above gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_2_5'>Your Phone (optional)</label><div class='ginput_container ginput_container_phone'><input name='input_5' id='input_2_5' type='tel' value='' class='large' aria-invalid="false" autocomplete="tel" /></div></div><div id="field_2_3" class="gfield gfield--type-textarea gfield--input-type-textarea gfield_contains_required field_sublabel_above gfield--has-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_2_3'>Your Comments/Questions<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label><div class='ginput_container ginput_container_textarea'><textarea name='input_3' id='input_2_3' class='textarea medium' aria-describedby="gfield_description_2_3" aria-required="true" aria-invalid="false" rows='10' cols='50'></textarea></div><div class='gfield_description' id='gfield_description_2_3'>By submitting my personal data, I consent to MPJEReview collecting, processing, and storing my information in accordance with the MPJEReview Privacy Notice.</div></div></div></div> <div class='gform-footer gform_footer top_label'> <input type='submit' id='gform_submit_button_2' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' value='Submit' /> <input type='hidden' name='gform_ajax' value='form_id=2&title=&description=&tabindex=0&theme=orbital&styles=[]&hash=91685dfd7e0c9ea81832d9d42b154da6' /> <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_2' value='iframe' /> <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_2' id='gform_theme_2' value='orbital' /> <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_2' id='gform_style_settings_2' value='[]' /> <input type='hidden' class='gform_hidden' name='is_submit_2' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='2' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_2' value='WyJbXSIsImFkOTNjYTAxMjUzMTliYjRlNjJlNGVkZDQwNDI2YzA2Il0=' /> <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_2' id='gform_target_page_number_2' value='0' /> <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_2' id='gform_source_page_number_2' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> <p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="245"/><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_2' id='gform_ajax_frame_2' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script type="text/javascript"> /* <![CDATA[ */ gform.initializeOnLoaded( function() {gformInitSpinner( 2, 'https://pharmacystandards.org/wp-content/plugins/gravityforms/images/spinner.svg', false );jQuery('#gform_ajax_frame_2').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_2');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_2').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_2').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_2').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_2').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_2').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_2').val();gformInitSpinner( 2, 'https://pharmacystandards.org/wp-content/plugins/gravityforms/images/spinner.svg', false );jQuery(document).trigger('gform_page_loaded', [2, current_page]);window['gf_submitting_2'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_2').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_2').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [2]);window['gf_submitting_2'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_2').text());}else{jQuery('#gform_2').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "2", currentPage: "current_page", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_2" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_2"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_2" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 2, current_page ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } );} ); /* ]]> */ </script> </div> <button type="button" class="pum-close popmake-close" aria-label="Close"> × </button> </div> </div> <script id="mcjs">!function(c,h,i,m,p){m=c.createElement(h),p=c.getElementsByTagName(h)[0],m.async=1,m.src=i,p.parentNode.insertBefore(m,p)}(document,"script","https://chimpstatic.com/mcjs-connected/js/users/c19008dafa779068f0dc9bc29/460a9815d7db3dda780be25de.js");</script> <script> const lazyloadRunObserver = () => { const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => { entries.forEach( ( entry ) => { if ( entry.isIntersecting ) { let lazyloadBackground = entry.target; if( lazyloadBackground ) { lazyloadBackground.classList.add( 'e-lazyloaded' ); } lazyloadBackgroundObserver.unobserve( entry.target ); } }); }, { rootMargin: '200px 0px 200px 0px' } ); lazyloadBackgrounds.forEach( ( lazyloadBackground ) => { lazyloadBackgroundObserver.observe( lazyloadBackground ); } ); }; const events = [ 'DOMContentLoaded', 'elementor/lazyload/observe', ]; events.forEach( ( event ) => { document.addEventListener( event, lazyloadRunObserver ); } ); </script> <script type='text/javascript'> (function () { var c = document.body.className; c = c.replace(/woocommerce-no-js/, 'woocommerce-js'); document.body.className = c; })(); </script> <link data-minify="1" rel="stylesheet" id="wc-stripe-blocks-checkout-style-css" type="text/css" media="all" data-pmdelayedstyle="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-gateway-stripe/build/upe-blocks.css?ver=1761854892"> <link data-minify="1" rel="stylesheet" id="wc-blocks-style-css" type="text/css" media="all" data-pmdelayedstyle="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce/assets/client/blocks/wc-blocks.css?ver=1761854892"> <link data-minify="1" rel="stylesheet" id="woof_sections_style-css" type="text/css" media="all" data-pmdelayedstyle="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/sections/css/sections.css?ver=1761854892"> <link data-minify="1" rel="stylesheet" id="ion.range-slider-css" type="text/css" media="all" data-pmdelayedstyle="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/js/ion.range-slider/css/ion.rangeSlider.css?ver=1761854892"> <link rel="stylesheet" id="woof_tooltip-css-css" type="text/css" media="all" data-pmdelayedstyle="https://pharmacystandards.org/wp-content/plugins/woocommerce-products-filter/js/tooltip/css/tooltipster.bundle.min.css?ver=3.3.6.6"> <link rel="stylesheet" id="woof_tooltip-css-noir-css" type="text/css" media="all" data-pmdelayedstyle="https://pharmacystandards.org/wp-content/plugins/woocommerce-products-filter/js/tooltip/css/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-noir.min.css?ver=3.3.6.6"> <link data-minify="1" rel="stylesheet" id="woof-front-builder-css-css" type="text/css" media="all" data-pmdelayedstyle="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/front_builder/css/front-builder.css?ver=1761854892"> <link data-minify="1" rel="stylesheet" id="woof-slideout-tab-css-css" type="text/css" media="all" data-pmdelayedstyle="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/slideout/css/jquery.tabSlideOut.css?ver=1761854892"> <link data-minify="1" rel="stylesheet" id="woof-slideout-css-css" type="text/css" media="all" data-pmdelayedstyle="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/slideout/css/slideout.css?ver=1761854892"> <script type="text/javascript" src="https://pharmacystandards.org/wp-includes/js/dist/hooks.min.js?ver=4d63a3d491d11ffd8ac6" id="wp-hooks-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-includes/js/dist/i18n.min.js?ver=5e580eb46a90c2b997e6" id="wp-i18n-js"></script> <script type="text/javascript" id="wp-i18n-js-after"> /* <![CDATA[ */ wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); /* ]]> */ </script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/uncanny-automator/src/assets/build/closure.js?ver=1761854892" id="uap-closure-js"></script> <script type="text/javascript" id="woof_front-js-extra"> /* <![CDATA[ */ var woof_filter_titles = []; var woof_ext_filter_titles = {"woof_author":"By author","backorder":"Exclude On backorder","featured":"Featured products","stock":"In stock","onsales":"On sale","byrating":"By rating","woof_sku":"by SKU","woof_text":"By text"}; /* ]]> */ </script> <script type="text/javascript" id="woof_front-js-before"> /* <![CDATA[ */ const woof_front_nonce = "f28e1f9b44"; var woof_is_permalink =1; var woof_shop_page = ""; var woof_m_b_container =".woocommerce-products-header"; var woof_really_curr_tax = {}; var woof_current_page_link = location.protocol + '//' + location.host + location.pathname; /*lets remove pagination from woof_current_page_link*/ woof_current_page_link = woof_current_page_link.replace(/\page\/[0-9]+/, ""); woof_current_page_link = "https://pharmacystandards.org/shop/"; var woof_link = 'https://pharmacystandards.org/wp-content/plugins/woocommerce-products-filter/'; var woof_ajaxurl = "https://pharmacystandards.org/wp-admin/admin-ajax.php"; var woof_lang = { 'orderby': "orderby", 'date': "date", 'perpage': "per page", 'pricerange': "price range", 'menu_order': "menu order", 'popularity': "popularity", 'rating': "rating", 'price': "price low to high", 'price-desc': "price high to low", 'clear_all': "Clear All", 'list_opener': "Сhild list opener", }; if (typeof woof_lang_custom == 'undefined') { var woof_lang_custom = {};/*!!important*/ } var woof_is_mobile = 0; var woof_show_price_search_button = 0; var woof_show_price_search_type = 0; var woof_show_price_search_type = 0; var swoof_search_slug = "swoof"; var icheck_skin = {}; icheck_skin.skin = "square"; icheck_skin.color = "blue"; var woof_select_type = 'chosen'; var woof_current_values = '[]'; var woof_lang_loading = "Loading ..."; var woof_lang_show_products_filter = "show products filter"; var woof_lang_hide_products_filter = "hide products filter"; var woof_lang_pricerange = "price range"; var woof_use_beauty_scroll =1; var woof_autosubmit =1; var woof_ajaxurl = "https://pharmacystandards.org/wp-admin/admin-ajax.php"; /*var woof_submit_link = "";*/ var woof_is_ajax = 0; var woof_ajax_redraw = 0; var woof_ajax_page_num =1; var woof_ajax_first_done = false; var woof_checkboxes_slide_flag = 0; /*toggles*/ var woof_toggle_type = "text"; var woof_toggle_closed_text = "+"; var woof_toggle_opened_text = "-"; var woof_toggle_closed_image = "https://pharmacystandards.org/wp-content/plugins/woocommerce-products-filter/img/plus.svg"; var woof_toggle_opened_image = "https://pharmacystandards.org/wp-content/plugins/woocommerce-products-filter/img/minus.svg"; /*indexes which can be displayed in red buttons panel*/ var woof_accept_array = ["min_price", "orderby", "perpage", "woof_author","backorder","featured","stock","onsales","byrating","woof_sku","woof_text","min_rating","product_brand","product_visibility","product_cat","product_tag","pa_bundle-type","pa_exam-type","pa_questions-in-bank","pa_state"]; /*for extensions*/ var woof_ext_init_functions = null; woof_ext_init_functions = '{"by_author":"woof_init_author","by_backorder":"woof_init_onbackorder","by_featured":"woof_init_featured","by_instock":"woof_init_instock","by_onsales":"woof_init_onsales","by_sku":"woof_init_sku","by_text":"woof_init_text","color":"woof_init_colors","image":"woof_init_image","label":"woof_init_labels","select_hierarchy":"woof_init_select_hierarchy","select_radio_check":"woof_init_select_radio_check","slider":"woof_init_sliders"}'; var woof_overlay_skin = "default"; function woof_js_after_ajax_done() { jQuery(document).trigger('woof_ajax_done'); } var woof_front_sd_is_a=1;var woof_front_show_notes=0;var woof_lang_front_builder_del="Are you sure you want to delete this filter-section?";var woof_lang_front_builder_options="Options";var woof_lang_front_builder_option="Option";var woof_lang_front_builder_section_options="Section Options";var woof_lang_front_builder_description="Description";var woof_lang_front_builder_close="Close";var woof_lang_front_builder_suggest="Suggest the feature";var woof_lang_front_builder_good_to_use="good to use in content areas";var woof_lang_front_builder_confirm_sd="Smart Designer item will be created and attached to this filter section and will cancel current type, proceed?";var woof_lang_front_builder_creating="Creating";var woof_lang_front_builder_shortcode="Shortcode";var woof_lang_front_builder_layout="Layout";var woof_lang_front_builder_filter_section="Section options";var woof_lang_front_builder_filter_redrawing="filter redrawing";var woof_lang_front_builder_filter_redrawn="redrawn";var woof_lang_front_builder_filter_redrawn="redrawn";var woof_lang_front_builder_title_top_info="this functionality is only visible for the site administrator";var woof_lang_front_builder_title_top_info_demo="demo mode is activated, and results are visible only to you";;var woof_lang_front_builder_select="+ Add filter section"; /* ]]> */ </script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/js/front.js?ver=1761854892" id="woof_front-js"></script> <script type="text/javascript" id="woof_url_parser-js-extra"> /* <![CDATA[ */ var url_parser_data = {"filters":{"by_price":"price","woof_author":"author","by_author":"by_author","by_backorder":"by_backorder","by_featured":"by_featured","by_instock":"by_instock","by_onsales":"by_onsales","min_rating":"min_rating","by_rating":"by_rating","woof_sku":"sku","by_sku":"by_sku","woof_text":"name","by_text":"by_text","product_brand":"product_brand","product_visibility":"product_visibility","product_cat":"product_cat","product_tag":"product_tag","pa_state":"state","pa_bundle-type":"bundle-type","pa_exam-type":"exam-type","pa_questions-in-bank":"questions-in-bank","instock":"instock","onsale":"onsale","featured":"featured","backorder_not_in":"backorder_not_in","rev_product_brand":"product_brand","rev_product_visibility":"product_visibility","rev_product_cat":"product_cat","rev_product_tag":"product_tag","rev_pa_state":"state","rev_pa_bundle-type":"bundle-type","rev_pa_exam-type":"exam-type","rev_pa_questions-in-bank":"questions-in-bank"},"special":{"stock":"instock","onsales":"onsale","product_visibility":"featured","backorder":"backorder_not_in"}}; /* ]]> */ </script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/url_request/js/url_parser.js?ver=1761854892" id="woof_url_parser-js"></script> <script type="text/javascript" id="awsm-job-scripts-js-extra"> /* <![CDATA[ */ var awsmJobsPublic = {"ajaxurl":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php","is_tax_archive":"","is_search":"","job_id":"0","wp_max_upload_size":"536870912","deep_linking":{"search":true,"spec":true,"pagination":true},"i18n":{"loading_text":"Loading...","form_error_msg":{"general":"Error in submitting your application. Please try again later!","file_validation":"The file you have selected is too large."}},"vendors":{"selectric":true,"jquery_validation":true}}; var awsmJobsPublic = {"ajaxurl":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php","is_tax_archive":"","is_search":"","job_id":"0","wp_max_upload_size":"536870912","deep_linking":{"search":true,"spec":true,"pagination":true},"i18n":{"loading_text":"Loading...","form_error_msg":{"general":"Error in submitting your application. Please try again later!","file_validation":"The file you have selected is too large."}},"vendors":{"selectric":true,"jquery_validation":true}}; /* ]]> */ </script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/wp-job-openings/assets/js/script.min.js?ver=3.5.4" id="awsm-job-scripts-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-includes/js/dist/vendor/moment.min.js?ver=2.30.1" id="moment-js"></script> <script type="text/javascript" id="moment-js-after"> /* <![CDATA[ */ moment.updateLocale( 'en_US', {"months":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthsShort":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"week":{"dow":1},"longDateFormat":{"LT":"g:i a","LTS":null,"L":null,"LL":"F j, Y","LLL":"F j, Y g:i a","LLLL":null}} ); moment.updateLocale( 'en_US', {"relativeTime":{"future":"in %s","past":"%s ago","s":"second","ss":"%d seconds","m":"a minute","mm":"%d minutes","h":"an hour","hh":"%d hours","d":"a day","dd":"%d days","w":"a week","ww":"%d weeks","M":"a month","MM":"%d months","y":"a year","yy":"%d years"}} ); /* ]]> */ </script> <script type="text/javascript" id="bp-livestamp-js-extra"> /* <![CDATA[ */ var bb_livestamp = {"year_in_seconds":"31536000","day_in_seconds":"86400","week_in_seconds":"604800","hour_in_seconds":"3600","minute_in_seconds":"60","chunks":[31536000,5256000,2592000,604800,86400,3600,60,1],"unknown_text":"sometime","right_now_text":"Just now","ago_text":"%s ago","second_text":"a second","seconds_text":"seconds","minute_text":"a minute","minutes_text":"minutes","hour_text":"an hour","hours_text":"hours","day_text":"a day","days_text":"days","week_text":"a week","weeks_text":"weeks","month_text":"a month","months_text":"months","year_text":"a year","years_text":"years"}; /* ]]> */ </script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/buddyboss-platform/bp-core/js/livestamp.min.js?ver=2.8.50" id="bp-livestamp-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-includes/js/underscore.min.js?ver=1.13.7" id="underscore-js"></script> <script type="text/javascript" id="wp-util-js-extra"> /* <![CDATA[ */ var _wpUtilSettings = {"ajax":{"url":"\/wp-admin\/admin-ajax.php"}}; /* ]]> */ </script> <script type="text/javascript" src="https://pharmacystandards.org/wp-includes/js/wp-util.min.js?ver=6.8.3" id="wp-util-js"></script> <script type="text/javascript" id="bp-nouveau-js-extra"> /* <![CDATA[ */ var BP_Nouveau = {"ajaxurl":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php","only_admin_notice":"As you are the only organizer of this group, you cannot leave it. You can either delete the group or promote another member to be an organizer first and then leave the group.","is_friend_confirm":"Are you sure you want to remove your connection with this member?","confirm":"Are you sure?","confirm_delete_set":"Are you sure you want to delete this set? This cannot be undone.","show_x_comments":"View more comments","unsaved_changes":"Your profile has unsaved changes. If you leave the page, the changes will be lost.","object_nav_parent":"#buddypress","anchorPlaceholderText":"Paste or type a link","empty_field":"New Field","close":"Close","parent_group_leave_confirm":"By leaving this main group you will automatically be removed and unsubscribed to any subgroups relating to this group.","group_leave_confirm":"<p>Are you sure you want to leave <span class=\"bb-group-name\"><\/span>?<\/p>","wpTime":"2025-10-31 21:41:38","wpTimezone":"America\/New_York","dir_labels":{"members":{"singular":"Member","plural":"Members"},"followers":{"singular":"Follower","plural":"Followers"}},"rest_url":"https:\/\/pharmacystandards.org\/wp-json\/buddyboss\/v1","rest_nonce":"ec649a5f66","member_label":"member","members_label":"members","objects":{"0":"activity","1":"members","4":"xprofile","10":"settings","11":"notifications"},"nonces":{"activity":"f7e697f853","members":"8ae4d45c55","xprofile":"3995b1487b","settings":"96f1ee5b90","notifications":"8b10ee5f50"},"is_send_ajax_request":"1","bb_enable_content_counts":"1","activity":{"params":{"user_id":0,"object":"user","backcompat":false,"post_nonce":"c73e79d4da","post_draft_nonce":"5f04a53153","excluded_hosts":[],"user_can_post":false,"is_activity_edit":false,"displayed_user_id":0,"errors":{"empty_post_update":"Sorry, Your update cannot be empty.","post_fail":"An error occurred while saving your post.","media_fail":"To change the media type, remove existing media from your post."},"avatar_url":"https:\/\/pharmacystandards.org\/wp-content\/plugins\/buddyboss-platform\/bp-core\/images\/profile-avatar-buddyboss-50.png","avatar_width":150,"avatar_height":150,"user_display_name":false,"user_domain":"","avatar_alt":"Profile photo of ","autoload":true,"objects":{"profile":{"text":"Post in: Profile","autocomplete_placeholder":"","priority":5}},"draft_activity":false,"access_control_settings":{"can_create_activity":true,"can_create_activity_media":true,"can_create_activity_document":true}},"strings":{"whatsnewPlaceholder":"Share what's on your mind, ...","whatsnewLabel":"Post what's new","whatsnewpostinLabel":"Post in","postUpdateButton":"Post","updatePostButton":"Update Post","cancelButton":"Cancel","commentLabel":"%d Comment","commentsLabel":"%d Comments","loadingMore":"Loading...","discardButton":"Discard Draft","pinPost":"Pin to Feed","unpinPost":"Unpin from Feed","pinGroupPost":"Pin to Group","unpinGroupPost":"Unpin from Group","pinPostError":"There was a problem marking this operation. Please try again.","reactionAjaxError":"There was a problem marking this operation. Please try again.","closeComments":"Turn off commenting","uncloseComments":"Turn on commenting","closeCommentsError":"There was a problem marking this operation. Please try again.","commentPostError":"There was a problem posting your comment.","muteNotification":"Turn off notifications","unmuteNotification":"Turn on notifications"}}}; var BB_Nouveau_Presence = {"heartbeat_enabled":"","presence_interval":"60","presence_default_interval":"60","presence_time_span":"20","idle_inactive_span":"180","rest_nonce":"ec649a5f66","native_presence":"1","native_presence_url":"https:\/\/pharmacystandards.org\/wp-content\/plugins\/buddyboss-platform\/bp-core\/bb-core-native-presence.php","presence_rest_url":"https:\/\/pharmacystandards.org\/wp-json\/buddyboss\/v1\/members\/presence"}; /* ]]> */ </script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/buddyboss-platform/bp-templates/bp-nouveau/js/buddypress-nouveau.min.js?ver=2.8.50" id="bp-nouveau-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/buddyboss-platform/bp-templates/bp-nouveau/js/jquery.guillotine.min.js?ver=2.8.50" id="guillotine-js-js"></script> <script type="text/javascript" id="cpscd-hash-tabs-js-after"> /* <![CDATA[ */ (function(){ function norm(s){ return (s||'').replace(/^#/, '').trim().toLowerCase(); } function parseHash(){ var raw = (location.hash||'').replace(/^#/, ''); if(!raw) return { name:'', params:new URLSearchParams() }; var parts = raw.split('?'); return { name: norm(parts[0]), params: new URLSearchParams(parts[1]||'') }; } function findTrigger(name){ return document.querySelector( '.cpscd-tabs [data-tab="'+name+'"], ' + '.cpscd-tabs a[href="#'+name+'"], ' + '[role="tab"][aria-controls="tab-'+name+'"]' ); } // Try several ways to switch the active certification context by ID. function selectCertById(id){ if(!id) return false; id = String(id); // 1) Click a switcher element (preferred) var btn = document.querySelector('.cpscd-cert-switcher [data-cert-id="'+id+'"], [data-role="cert-switch"][data-cert-id="'+id+'"]'); if (btn){ btn.click(); return true; } // 2) Change a <select> var sel = document.querySelector('#cpscd-cert-select, select[name="cpscd_cert_select"]'); if (sel && sel.querySelector('option[value="'+id+'"]')){ sel.value = id; sel.dispatchEvent(new Event('change', {bubbles:true})); return true; } // 3) Hidden field + event var hidden = document.querySelector('input[name="cpscd_active_cert"]'); if(hidden){ hidden.value = id; hidden.dispatchEvent(new Event('change', {bubbles:true})); document.dispatchEvent(new CustomEvent('cpscd:active-cert-changed', {detail:{id:id}})); return true; } return false; } function showPanelDirect(name){ var id = 'tab-' + name; var panel = document.getElementById(id); if(!panel) return false; document.querySelectorAll('.cpscd-tabpanel').forEach(function(p){ p.style.display = 'none'; p.setAttribute('aria-hidden','true'); }); panel.style.display = 'block'; panel.setAttribute('aria-hidden','false'); document.querySelectorAll('.cpscd-tabs [aria-selected="true"]').forEach(function(t){ t.setAttribute('aria-selected','false'); t.classList.remove('is-active','active'); }); var t = findTrigger(name); if (t){ t.setAttribute('aria-selected','true'); t.classList.add('is-active','active'); } return true; } function activateFromHash(){ var parsed = parseHash(); if(!parsed.name) return; // If a cert is specified, switch to it first var certId = parsed.params.get('cert'); if (certId) { selectCertById(certId); } // Prefer reusing your tab's click handler var trigger = findTrigger(parsed.name); if (trigger){ trigger.click(); } else { showPanelDirect(parsed.name); } } function wireClicksUpdateHash(){ // Keep the hash in sync when users click tabs document.querySelectorAll('.cpscd-tabs [data-tab], .cpscd-tabs a[href^="#"], [role="tab"][aria-controls]') .forEach(function(el){ el.addEventListener('click', function(){ var name = el.getAttribute('data-tab') || norm(el.getAttribute('href')) || norm(el.getAttribute('aria-controls')||'').replace(/^tab-/, ''); if(!name) return; if (history.replaceState) { history.replaceState(null, '', '#'+name); } else { location.hash = '#'+name; } }, {passive:true}); }); // Optional: if someone uses JS to render chips without hrefs, // make sure clicks still deep-link. document.addEventListener('click', function(e){ var chip = e.target.closest('[data-role="cert-chip"][data-cert-id]'); if(!chip) return; // If it already has an href with #credential?cert=… the hashchange will handle it. // This ensures non-anchor chips still work: if (!chip.hasAttribute('href')) { var id = chip.getAttribute('data-cert-id'); var target = '#credential?cert=' + encodeURIComponent(id); if (history.replaceState) { history.replaceState(null, '', target); } else { location.hash = target; } e.preventDefault(); activateFromHash(); } }); } document.addEventListener('DOMContentLoaded', function(){ wireClicksUpdateHash(); activateFromHash(); // open correct tab on first load window.addEventListener('hashchange', activateFromHash); }); })(); /* ]]> */ </script> <script type="text/javascript" src="https://js.stripe.com/v3/" id="stripe-js-js"></script> <script type="text/javascript" id="cps-scheduler-script-js-extra"> /* <![CDATA[ */ var cps_scheduler_vars = {"ajax_url":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php","stripe_pk":"pk_live_51S5XYNAPzQEU3L6hsvH9yV3Q5jH3eeLmgddxDB2fw3uPEB5i9gWkAvnqLvDkGRFJytsuOdt9IeVRv9x85DDTakkD00r1ZxOoSQ","payment_nonce":"d27a9bf8a0"}; /* ]]> */ </script> <script type="text/javascript" id="cps-scheduler-script-js-after"> /* <![CDATA[ */ (function($){ $(document).ready(function(){ var stripe = (typeof Stripe !== 'undefined' && cps_scheduler_vars.stripe_pk) ? Stripe(cps_scheduler_vars.stripe_pk) : null; var elements, cardElement; const modal = $('.cps-modal-overlay'); const payBtn = $('#cps-pay-btn'); const paymentMessage = $('#cps-payment-message'); const dynamicAmountEl = $('.cps-dynamic-amount'); function openPaymentModal(title, amountText){ modal.find('.cps-modal-title').text(title||'Pay Fee'); paymentMessage.text(''); payBtn.prop('disabled', true).removeClass('processing'); $('#cps-card-element').empty().addClass('is-loading'); if (amountText) dynamicAmountEl.text(amountText); modal.css('display','flex'); } function closePaymentModal(){ modal.fadeOut(200); if (cardElement) { try{ cardElement.destroy(); }catch(e){} } } function labelFor(type){ if(type==='reschedule_missed')return '$100.00'; if(type==='cancel')return '$50.00'; return '$50.00'; } function handlePaidAction(type, cert){ if (!stripe) { alert('Stripe is not configured correctly.'); return; } openPaymentModal(type==='cancel'?'Pay Cancellation Fee':(type==='reschedule_missed'?'Pay Missed Appointment Fee':'Pay Reschedule Fee'), labelFor(type)); $.post(cps_scheduler_vars.ajax_url, {action:'cps_create_payment_intent', nonce:cps_scheduler_vars.payment_nonce, cert:cert, type:type}) .done(function(res){ if (res.success){ elements = stripe.elements({ clientSecret: res.data.clientSecret }); cardElement = elements.create('card'); cardElement.mount('#cps-card-element'); $('#cps-card-element').removeClass('is-loading'); payBtn.prop('disabled', false); modal.data('clientSecret', res.data.clientSecret); } else { paymentMessage.text(res.data?.message || 'Error preparing payment.'); $('#cps-card-element').removeClass('is-loading'); } }) .fail(function(){ paymentMessage.text('Could not connect to the server.'); $('#cps-card-element').removeClass('is-loading'); }); } modal.on('click','.cps-modal-close', closePaymentModal); payBtn.on('click', async function(){ const cs = modal.data('clientSecret'); payBtn.prop('disabled', true).addClass('processing'); paymentMessage.text(''); const { error, paymentIntent } = await stripe.confirmCardPayment(cs, { payment_method: { card: cardElement }}); if (error) { paymentMessage.text(error.message); payBtn.prop('disabled', false).removeClass('processing'); } else if (paymentIntent.status === 'succeeded') { $.post(cps_scheduler_vars.ajax_url, {action:'cps_execute_paid_action', nonce:cps_scheduler_vars.payment_nonce, payment_intent_id: paymentIntent.id}) .done(function(res){ if(res.success){ closePaymentModal(); window.location.reload(); } else { paymentMessage.text(res.data?.message || 'Payment succeeded, but action failed.'); payBtn.prop('disabled', false).removeClass('processing'); } }) .fail(function(){ paymentMessage.text('Payment succeeded, but could not finalize action.'); payBtn.prop('disabled', false).removeClass('processing'); }); } }); $(document).on('click','.cps-faux-wrap .resched', function(){ handlePaidAction('reschedule', $(this).closest('.cps-faux-wrap').data('cert')); }); $(document).on('click','.cps-faux-wrap .resched-missed', function(){ handlePaidAction('reschedule_missed', $(this).closest('.cps-faux-wrap').data('cert')); }); $(document).on('click','.cps-faux-wrap .cancel', function(){ handlePaidAction('cancel', $(this).closest('.cps-faux-wrap').data('cert')); }); // -------------------- Timezone helpers -------------------- function getBrowserTZ() { try { return Intl.DateTimeFormat().resolvedOptions().timeZone || ''; } catch(e){ return ''; } } function getAllIanaZones(){ if (Intl.supportedValuesOf) { try { return Intl.supportedValuesOf('timeZone') || []; } catch(e){} } return ['Pacific/Honolulu','America/Anchorage','America/Los_Angeles','America/Denver','America/Chicago','America/New_York','America/Toronto','America/Mexico_City','America/Bogota','America/Sao_Paulo','Atlantic/Reykjavik','Europe/London','Europe/Paris','Europe/Berlin','Europe/Madrid','Europe/Rome','Europe/Warsaw','Europe/Athens','Africa/Cairo','Europe/Moscow','Asia/Dubai','Asia/Karachi','Asia/Kolkata','Asia/Bangkok','Asia/Singapore','Asia/Shanghai','Asia/Tokyo','Australia/Brisbane','Australia/Sydney','Pacific/Auckland']; } function populateTZSelect(selectEl, currentTZ){ var zones = getAllIanaZones().slice().sort(); $(selectEl).empty(); zones.forEach(z => $(selectEl).append($('<option></option>').val(z).text(z))); if (currentTZ && zones.indexOf(currentTZ) >= 0) { $(selectEl).val(currentTZ); } else { var bz = getBrowserTZ(); if (bz && zones.indexOf(bz) >= 0) $(selectEl).val(bz); } } // DST-safe timezone math helpers function getOffsetMs(date, timeZone) { var dtf = new Intl.DateTimeFormat('en-US', { timeZone, year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false }); var parts = dtf.formatToParts(date).reduce(function(acc, p){ if (p.type !== 'literal') acc[p.type] = parseInt(p.value, 10); return acc; }, {}); var asUTC = Date.UTC(parts.year, parts.month - 1, parts.day, parts.hour, parts.minute, parts.second); return asUTC - date.getTime(); } function tzLocalToUtcMs(y, m, d, hh, mm, timeZone) { var utcGuess = Date.UTC(y, m - 1, d, hh, mm, 0); var offset = getOffsetMs(new Date(utcGuess), timeZone); return utcGuess - offset; } function todayStrInTz(timeZone) { var dtf = new Intl.DateTimeFormat('en-CA', { timeZone, year: 'numeric', month: '2-digit', day: '2-digit' }); return dtf.format(new Date()); // YYYY-MM-DD } // -------------------- Picker UI -------------------- $('.cps-picker-wrap').each(function(){ const picker = $(this); const wrap = picker.closest('.cps-faux-wrap'); const cert = wrap.data('cert'); const calHeader = picker.find('#cps-cal-month-year'); const calGrid = picker.find('#cps-calendar-grid'); const timesHeader = picker.find('#cps-times-header'); const timesList = picker.find('#cps-times-list'); const tzSelect = picker.find('.cps-tz-select'); theSave = picker.find('.cps-btn.save'); const saveBtn = theSave; // keep name const summaryEl = picker.find('#cps-selection-summary'); let viewDate = new Date(); let selectedDate = null; let selectedTime = null; const timeFmt = wrap.data('timefmt') || '12h'; const disableWeekends = wrap.data('disable-weekends') === 'yes'; const allowedDays = new Set(String(wrap.data('allowed-days') || '').split(',').map(s => parseInt(s.trim(), 10)).filter(v => !isNaN(v))); const blackoutDates = new Set(String(wrap.data('blackout') || '').split(',').map(s => s.trim()).filter(Boolean)); const minLeadMinutes = parseInt(wrap.data('minlead') || '0', 10); function formatDate(d) { return d.getFullYear() + '-' + String(d.getMonth() + 1).padStart(2, '0') + '-' + String(d.getDate()).padStart(2, '0'); } function formatTime(h, m) { if (timeFmt === '24h') return String(h).padStart(2, '0') + ':' + String(m).padStart(2, '0'); const am = h >= 12 ? 'PM' : 'AM'; let hh = h % 12; if (hh === 0) hh = 12; return hh + ':' + String(m).padStart(2, '0') + ' ' + am; } function parseHM(s) { const a = (s || '').split(':'); return { h: +a[0] || 0, m: +a[1] || 0 }; } function updateSummary() { if (selectedDate instanceof Date && !isNaN(selectedDate) && selectedTime) { const dateStr = selectedDate.toLocaleDateString(undefined, { weekday: 'long', month: 'long', day: 'numeric', year: 'numeric' }); const timeStr = formatTime(selectedTime.h, selectedTime.m); const tzStr = tzSelect.val() || getBrowserTZ(); summaryEl.html('Your selection: <strong>' + dateStr + ' at ' + timeStr + '</strong> (' + tzStr + ')'); saveBtn.prop('disabled', false); } else { summaryEl.text('Pick a date, then a time.'); saveBtn.prop('disabled', true); } } function renderTimeSlots(date) { selectedTime = null; updateSummary(); timesHeader.text(date.toLocaleDateString(undefined, { weekday: 'long', month: 'long', day: 'numeric' })); timesList.html('').addClass('is-loading'); const dow = date.getDay(); const tz = tzSelect.val() || getBrowserTZ(); if ((disableWeekends && (dow === 0 || dow === 6)) || (allowedDays.size > 0 && !allowedDays.has(dow)) || blackoutDates.has(formatDate(date))) { timesList.html('<div class="cps-no-times">No times available on this day.</div>').removeClass('is-loading'); return; } setTimeout(() => { timesList.html('').removeClass('is-loading'); const step = parseInt(wrap.data('step') || '30', 10); const st = parseHM(wrap.data('start') || '00:00'); const en = parseHM(wrap.data('end') || '23:30'); const nowUtcMs = Date.now(); const cutoffUtcMs = nowUtcMs + minLeadMinutes * 60000; let hasSlots = false; const y = date.getFullYear(), mo = date.getMonth() + 1, d = date.getDate(); for (let t = (st.h * 60 + st.m); t <= (en.h * 60 + en.m); t += step) { const h = Math.floor(t / 60), m = t % 60; const slotUtcMs = tzLocalToUtcMs(y, mo, d, h, m, tz); if (slotUtcMs > cutoffUtcMs) { const btn = $('<button type="button" class="cps-slot"></button>') .text(formatTime(h, m)) .data('time', {h: h, m: m}); timesList.append(btn); hasSlots = true; } } if (!hasSlots) { timesList.html('<div class="cps-no-times">No more times available on this day.</div>'); } }, 150); } function renderCalendar() { calGrid.html(''); const year = viewDate.getFullYear(); const month = viewDate.getMonth(); calHeader.text(viewDate.toLocaleDateString(undefined, { month: 'long', year: 'numeric' })); const firstDay = new Date(year, month, 1).getDay(); const daysInMonth = new Date(year, month + 1, 0).getDate(); const tz = tzSelect.val() || getBrowserTZ(); const todayStr = todayStrInTz(tz); for (let i = 0; i < firstDay; i++) { calGrid.append('<div class="cps-day is-other-month"></div>'); } for (let i = 1; i <= daysInMonth; i++) { const dayDate = new Date(year, month, i); const dayStr = formatDate(dayDate); const btn = $('<button type="button" class="cps-day"></button>').text(i).data('date', dayDate); if (dayStr === todayStr) btn.addClass('is-today'); if (selectedDate && dayDate.getFullYear() === selectedDate.getFullYear() && dayDate.getMonth() === selectedDate.getMonth() && dayDate.getDate() === selectedDate.getDate()) { btn.addClass('is-selected'); } const dow = dayDate.getDay(); if (dayStr < todayStr || (disableWeekends && (dow === 0 || dow === 6)) || (allowedDays.size > 0 && !allowedDays.has(dow)) || blackoutDates.has(dayStr)) { btn.prop('disabled', true); } calGrid.append(btn); } } picker.on('click', '.cps-day:not(:disabled)', function() { selectedDate = $(this).data('date'); renderCalendar(); renderTimeSlots(selectedDate); }); picker.on('click', '.cps-slot', function() { picker.find('.cps-slot').attr('aria-pressed', 'false'); $(this).attr('aria-pressed', 'true'); selectedTime = $(this).data('time'); updateSummary(); }); picker.find('#cps-cal-prev').on('click', () => { viewDate.setMonth(viewDate.getMonth() - 1); renderCalendar(); }); picker.find('#cps-cal-next').on('click', () => { viewDate.setMonth(viewDate.getMonth() + 1); renderCalendar(); }); picker.find('#cps-cal-today').on('click', () => { viewDate = new Date(); selectedDate = null; timesList.empty(); timesHeader.text('Select a date to see available times'); renderCalendar(); }); tzSelect.on('change', function(){ if (selectedDate) renderTimeSlots(selectedDate); updateSummary(); renderCalendar(); }); picker.find('.cps-detect-tz').on('click', function() { const browserTz = getBrowserTZ(); if (browserTz) { tzSelect.val(browserTz).trigger('change'); } }); saveBtn.on('click', function() { if (!selectedDate || !selectedTime) { alert('Please select a date and time.'); return; } const btn = $(this); btn.prop('disabled', true).text('Saving...'); const localDateTime = formatDate(selectedDate) + 'T' + String(selectedTime.h).padStart(2, '0') + ':' + String(selectedTime.m).padStart(2, '0'); const tz = tzSelect.val() || getBrowserTZ(); $.post(cps_scheduler_vars.ajax_url, { action: 'cps_execute_free_booking', nonce: cps_scheduler_vars.payment_nonce, cert: cert, datetime_local: localDateTime, tz: tz }) .done(res => { if(res.success) window.location.reload(); else { alert(res.data?.message || 'An unknown error occurred.'); btn.prop('disabled', false).text('Confirm Appointment'); } }) .fail(() => { alert('Could not connect to the server.'); btn.prop('disabled', false).text('Confirm Appointment'); }); }); // Initialization if (tzSelect.length) { populateTZSelect(tzSelect[0], picker.data('saved-tz') || getBrowserTZ()); } const savedDateStr = picker.data('saved-date'); if (savedDateStr) { const parts = savedDateStr.split('-').map(Number); selectedDate = new Date(parts[0], parts[1] - 1, parts[2]); viewDate = new Date(selectedDate); renderTimeSlots(selectedDate); } renderCalendar(); updateSummary(); }); // -------------------- Inline confirm-card grace countdown -------------------- $('.cps-confirm-wrap').each(function(){ const box = $(this); const start = Date.parse(String(box.data('start-utc')||'') + 'Z'); const grace = Date.parse(String(box.data('grace-utc')||'') + 'Z'); const end = Date.parse(String(box.data('end-utc') ||'') + 'Z'); const attended = String(box.data('attended')) === '1'; if (!isFinite(start) || !isFinite(grace) || !isFinite(end)) return; const enterBtn = box.find('.cps-enter'); const reschedBtn = box.find('.resched'); const cancelBtn = box.find('.cancel'); const missedBtn = box.find('.resched-missed'); const graceRow = box.find('.cps-grace-row'); const timerEl = box.find('.cps-grace-timer'); function setHMS(ms){ let s = Math.max(0, Math.floor(ms/1000)); const h = Math.floor(s/3600); s -= h*3600; const m = Math.floor(s/60); s -= m*60; return String(h).padStart(2,'0')+':'+String(m).padStart(2,'0')+':'+String(s).padStart(2,'0'); } function refresh(){ const now = Date.now(); if (now < start){ enterBtn.hide(); graceRow.hide(); missedBtn.hide(); reschedBtn.show(); cancelBtn.show(); return; } if (now >= start && now < end){ if (!attended && now < grace){ graceRow.show(); enterBtn.show(); const left = grace - now; timerEl.text(setHMS(left)); reschedBtn.show(); cancelBtn.show(); missedBtn.hide(); } else if (!attended && now >= grace) { graceRow.hide(); enterBtn.hide(); reschedBtn.hide(); cancelBtn.hide(); missedBtn.show(); } else { graceRow.hide(); enterBtn.show(); reschedBtn.show(); cancelBtn.show(); missedBtn.hide(); } return; } graceRow.hide(); enterBtn.hide(); reschedBtn.hide(); cancelBtn.hide(); missedBtn.show(); } refresh(); const iv = setInterval(function(){ refresh(); if (Date.now() > end + 3600*1000) clearInterval(iv); }, 1000); }); // -------------------- Standalone countdown widget (with active-state grace message) -------------------- $('.cps-countdown-wrap').each(function(){ const wrap = $(this), start = Date.parse(String(wrap.data('start-utc')) + 'Z'), graceAt = Date.parse(String(wrap.data('grace-utc')) + 'Z'), end = Date.parse(String(wrap.data('end-utc')) + 'Z'); const attended = String(wrap.data('attended')) === '1', submission = String(wrap.data('submission')) === '1'; const liveState = wrap.find('.cps-countdown-live-state'), activeState = wrap.find('.cps-countdown-active-state'), missedState = wrap.find('.cps-countdown-missed-state'), submState = wrap.find('.cps-countdown-submission-state'), expiredState = wrap.find('.cps-countdown-expired-state'); const activeGraceRow = activeState.find('.cps-active-grace-row'), activeGraceTimer = activeState.find('.cps-active-grace-timer'); let iv; function only(el){ wrap.find('.cps-countdown-state').hide(); if(el) el.show(); } function hms(ms){ let s = Math.max(0, Math.floor(ms/1000)); const h = Math.floor(s/3600); s -= h*3600; const m = Math.floor(s/60); s -= m*60; return String(h).padStart(2,'0')+':'+String(m).padStart(2,'0')+':'+String(s).padStart(2,'0'); } function tick(){ const now = Date.now(); if (submission){ only(submState); clearInterval(iv); return; } if (now < start){ only(liveState); const dist = start - now, d = Math.floor(dist/86400000), h = Math.floor((dist%86400000)/3600000), m = Math.floor((dist%3600000)/60000), s = Math.floor((dist%60000)/1000); liveState.find('.cps-countdown-days').text(String(d).padStart(2,'0')); liveState.find('.cps-countdown-hours').text(String(h).padStart(2,'0')); liveState.find('.cps-countdown-minutes').text(String(m).padStart(2,'0')); liveState.find('.cps-countdown-seconds').text(String(s).padStart(2,'0')); return; } if (now >= start && now < end){ if (!attended && now >= graceAt){ only(missedState); clearInterval(iv); return; } // Within window; show active state only(activeState); if (!attended && now < graceAt){ activeGraceRow.show(); activeGraceTimer.text(hms(graceAt - now)); } else { activeGraceRow.hide(); } return; } only(missedState); clearInterval(iv); } tick(); iv = setInterval(tick, 1000); }); // If URL has ?missed=1 but the appointment is in the future, strip it (function(){ const wrap = $('.cps-faux-wrap'); if (!wrap.length) return; const iso = String(wrap.data('iso') || ''); if (!iso) return; const startMs = Date.parse(iso.endsWith('Z') ? iso : (iso + 'Z')); if (!isNaN(startMs) && Date.now() < startMs) { const url = new URL(window.location.href); if (url.searchParams.get('missed') === '1') { url.searchParams.delete('missed'); window.history.replaceState({}, document.title, url.toString()); } } if (String(wrap.data('is-missed')) === '1') { $('.cps-picker-wrap').hide(); } })(); }); })(jQuery); /* ]]> */ </script> <script type="text/javascript" id="woocommerce-js-extra"> /* <![CDATA[ */ var woocommerce_params = {"ajax_url":"\/wp-admin\/admin-ajax.php","wc_ajax_url":"\/?wc-ajax=%%endpoint%%","i18n_password_show":"Show password","i18n_password_hide":"Hide password"}; /* ]]> */ </script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver=10.1.2" id="woocommerce-js" data-wp-strategy="defer"></script> <script type="text/javascript" id="ld_mqc_front_js-js-extra"> /* <![CDATA[ */ var ld_mqc = {"ajax_url":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php"}; /* ]]> */ </script> <script type="text/javascript" id="ld_ct_binary_selector_js-js-extra"> /* <![CDATA[ */ var ld_ct = {"ajax_url":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php"}; /* ]]> */ </script> <script type="text/javascript" id="ld_sqb_front_js-js-extra"> /* <![CDATA[ */ var ld_sqb = {"ajax_url":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php"}; /* ]]> */ </script> <script type="text/javascript" id="rocket-browser-checker-js-after"> /* <![CDATA[ */ "use strict";var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}var RocketBrowserCompatibilityChecker=function(){function RocketBrowserCompatibilityChecker(options){_classCallCheck(this,RocketBrowserCompatibilityChecker),this.passiveSupported=!1,this._checkPassiveOption(this),this.options=!!this.passiveSupported&&options}return _createClass(RocketBrowserCompatibilityChecker,[{key:"_checkPassiveOption",value:function(self){try{var options={get passive(){return!(self.passiveSupported=!0)}};window.addEventListener("test",null,options),window.removeEventListener("test",null,options)}catch(err){self.passiveSupported=!1}}},{key:"initRequestIdleCallback",value:function(){!1 in window&&(window.requestIdleCallback=function(cb){var start=Date.now();return setTimeout(function(){cb({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-start))}})},1)}),!1 in window&&(window.cancelIdleCallback=function(id){return clearTimeout(id)})}},{key:"isDataSaverModeOn",value:function(){return"connection"in navigator&&!0===navigator.connection.saveData}},{key:"supportsLinkPrefetch",value:function(){var elem=document.createElement("link");return elem.relList&&elem.relList.supports&&elem.relList.supports("prefetch")&&window.IntersectionObserver&&"isIntersecting"in IntersectionObserverEntry.prototype}},{key:"isSlowConnection",value:function(){return"connection"in navigator&&"effectiveType"in navigator.connection&&("2g"===navigator.connection.effectiveType||"slow-2g"===navigator.connection.effectiveType)}}]),RocketBrowserCompatibilityChecker}(); /* ]]> */ </script> <script type="text/javascript" id="rocket-preload-links-js-extra"> /* <![CDATA[ */ var RocketPreloadLinksConfig = {"excludeUris":"\/cart\/|\/checkout\/|\/certification\/|\/my-account\/|\/shop\/|\/product\/|\/course\/|\/courses\/|\/lessons\/|\/lesson\/|\/quiz\/|\/quizzes\/|\/groups\/|\/dashboard\/|\/(?:.+\/)?feed(?:\/(?:.+\/?)?)?$|\/(?:.+\/)?embed\/|\/checkout\/??(.*)|\/cart\/?|\/my-account\/??(.*)|\/(index.php\/)?(.*)wp-json(\/.*|$)|\/refer\/|\/go\/|\/recommend\/|\/recommends\/","usesTrailingSlash":"1","imageExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php","fileExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php|html|htm","siteUrl":"https:\/\/pharmacystandards.org","onHoverDelay":"100","rateThrottle":"3"}; /* ]]> */ </script> <script type="text/javascript" id="rocket-preload-links-js-after"> /* <![CDATA[ */ (function() { "use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e=function(){function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}}();function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var t=function(){function n(e,t){i(this,n),this.browser=e,this.config=t,this.options=this.browser.options,this.prefetched=new Set,this.eventTime=null,this.threshold=1111,this.numOnHover=0}return e(n,[{key:"init",value:function(){!this.browser.supportsLinkPrefetch()||this.browser.isDataSaverModeOn()||this.browser.isSlowConnection()||(this.regex={excludeUris:RegExp(this.config.excludeUris,"i"),images:RegExp(".("+this.config.imageExt+")$","i"),fileExt:RegExp(".("+this.config.fileExt+")$","i")},this._initListeners(this))}},{key:"_initListeners",value:function(e){-1<this.config.onHoverDelay&&document.addEventListener("mouseover",e.listener.bind(e),e.listenerOptions),document.addEventListener("mousedown",e.listener.bind(e),e.listenerOptions),document.addEventListener("touchstart",e.listener.bind(e),e.listenerOptions)}},{key:"listener",value:function(e){var t=e.target.closest("a"),n=this._prepareUrl(t);if(null!==n)switch(e.type){case"mousedown":case"touchstart":this._addPrefetchLink(n);break;case"mouseover":this._earlyPrefetch(t,n,"mouseout")}}},{key:"_earlyPrefetch",value:function(t,e,n){var i=this,r=setTimeout(function(){if(r=null,0===i.numOnHover)setTimeout(function(){return i.numOnHover=0},1e3);else if(i.numOnHover>i.config.rateThrottle)return;i.numOnHover++,i._addPrefetchLink(e)},this.config.onHoverDelay);t.addEventListener(n,function e(){t.removeEventListener(n,e,{passive:!0}),null!==r&&(clearTimeout(r),r=null)},{passive:!0})}},{key:"_addPrefetchLink",value:function(i){return this.prefetched.add(i.href),new Promise(function(e,t){var n=document.createElement("link");n.rel="prefetch",n.href=i.href,n.onload=e,n.onerror=t,document.head.appendChild(n)}).catch(function(){})}},{key:"_prepareUrl",value:function(e){if(null===e||"object"!==(void 0===e?"undefined":r(e))||!1 in e||-1===["http:","https:"].indexOf(e.protocol))return null;var t=e.href.substring(0,this.config.siteUrl.length),n=this._getPathname(e.href,t),i={original:e.href,protocol:e.protocol,origin:t,pathname:n,href:t+n};return this._isLinkOk(i)?i:null}},{key:"_getPathname",value:function(e,t){var n=t?e.substring(this.config.siteUrl.length):e;return n.startsWith("/")||(n="/"+n),this._shouldAddTrailingSlash(n)?n+"/":n}},{key:"_shouldAddTrailingSlash",value:function(e){return this.config.usesTrailingSlash&&!e.endsWith("/")&&!this.regex.fileExt.test(e)}},{key:"_isLinkOk",value:function(e){return null!==e&&"object"===(void 0===e?"undefined":r(e))&&(!this.prefetched.has(e.href)&&e.origin===this.config.siteUrl&&-1===e.href.indexOf("?")&&-1===e.href.indexOf("#")&&!this.regex.excludeUris.test(e.href)&&!this.regex.images.test(e.href))}}],[{key:"run",value:function(){"undefined"!=typeof RocketPreloadLinksConfig&&new n(new RocketBrowserCompatibilityChecker({capture:!0,passive:!0}),RocketPreloadLinksConfig).init()}}]),n}();t.run(); }()); /* ]]> */ </script> <script type="text/javascript" id="mailchimp-woocommerce-js-extra"> /* <![CDATA[ */ var mailchimp_public_data = {"site_url":"https:\/\/pharmacystandards.org","ajax_url":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php","disable_carts":"","subscribers_only":"","language":"en","allowed_to_set_cookies":"1"}; /* ]]> */ </script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/mailchimp-for-woocommerce/public/js/mailchimp-woocommerce-public.min.js?ver=5.5.1.07" id="mailchimp-woocommerce-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3" id="jquery-ui-core-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-includes/js/jquery/ui/mouse.min.js?ver=1.13.3" id="jquery-ui-mouse-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-includes/js/jquery/ui/sortable.min.js?ver=1.13.3" id="jquery-ui-sortable-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/buddyboss-platform/bp-templates/bp-nouveau/js/buddypress-xprofile.min.js?ver=2.8.50" id="bp-nouveau-xprofile-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/themes/reign-theme/assets/js/reign-nouveau.min.js?ver=7.7.3" id="reign-nouveau-js-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/themes/reign-theme/blocks/reign-news-widget/build/frontend.js?ver=1761854892" id="reign-news-widget-frontend-js"></script> <script type="text/javascript" id="learndash-front-js-extra"> /* <![CDATA[ */ var ldVars = {"postID":"1378836","videoReqMsg":"You must watch the video before accessing this content","ajaxurl":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php"}; /* ]]> */ </script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/sfwd-lms/themes/ld30/assets/js/learndash.js?ver=1761854892" id="learndash-front-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=3.29.2" id="elementor-webpack-runtime-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.29.2" id="elementor-frontend-modules-js"></script> <script type="text/javascript" id="elementor-frontend-js-before"> /* <![CDATA[ */ var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnTwitter":"Share on Twitter","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},"hasCustomBreakpoints":false},"version":"3.29.2","is_static":false,"experimentalFeatures":{"e_font_icon_svg":true,"additional_custom_breakpoints":true,"container":true,"e_optimized_markup":true,"e_local_google_fonts":true,"theme_builder_v2":true,"nested-elements":true,"editor_v2":true,"home_screen":true,"cloud-library":true,"e_opt_in_v4_page":true,"mega-menu":true},"urls":{"assets":"https:\/\/pharmacystandards.org\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/pharmacystandards.org\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"3c95f71a6f"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"active_breakpoints":["viewport_mobile","viewport_tablet"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description","woocommerce_notices_elements":[]},"post":{"id":1378836,"title":"34.4%20Digital%20Marketing%2C%20SEO%2C%20and%20Outcome%20Storytelling%20%E2%80%93%20Council%20on%20Pharmacy%20Standards","excerpt":"","featuredImage":false}}; /* ]]> */ </script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=3.29.2" id="elementor-frontend-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=3.28.3" id="e-sticky-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/wbcom-essential/plugins/elementor/assets/js/header-bar.js?ver=1761854892" id="header-bar-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js?ver=10.1.2" id="sourcebuster-js-js"></script> <script type="text/javascript" id="wc-order-attribution-js-extra"> /* <![CDATA[ */ var wc_order_attribution = {"params":{"lifetime":1.0e-5,"session":30,"base64":false,"ajaxurl":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":true},"fields":{"source_type":"current.typ","referrer":"current_add.rf","utm_campaign":"current.cmp","utm_source":"current.src","utm_medium":"current.mdm","utm_content":"current.cnt","utm_id":"current.id","utm_term":"current.trm","utm_source_platform":"current.plt","utm_creative_format":"current.fmt","utm_marketing_tactic":"current.tct","session_entry":"current_add.ep","session_start_time":"current_add.fd","session_pages":"session.pgs","session_count":"udata.vst","user_agent":"udata.uag"}}; /* ]]> */ </script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js?ver=10.1.2" id="wc-order-attribution-js"></script> <script type="text/javascript" id="perfmatters-lazy-load-js-before"> /* <![CDATA[ */ window.lazyLoadOptions={elements_selector:"img[data-src],.perfmatters-lazy,.perfmatters-lazy-css-bg",thresholds:"0px 0px",class_loading:"pmloading",class_loaded:"pmloaded",callback_loaded:function(element){if(element.tagName==="IFRAME"){if(element.classList.contains("pmloaded")){if(typeof window.jQuery!="undefined"){if(jQuery.fn.fitVids){jQuery(element).parent().fitVids()}}}}}};window.addEventListener("LazyLoad::Initialized",function(e){var lazyLoadInstance=e.detail.instance;}); /* ]]> */ </script> <script type="text/javascript" async src="https://pharmacystandards.org/wp-content/plugins/perfmatters/js/lazyload.min.js?ver=2.4.5" id="perfmatters-lazy-load-js"></script> <script type="text/javascript" id="popup-maker-site-js-extra"> /* <![CDATA[ */ var pum_vars = {"version":"1.20.6","pm_dir_url":"https:\/\/pharmacystandards.org\/wp-content\/plugins\/popup-maker\/","ajaxurl":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php","restapi":"https:\/\/pharmacystandards.org\/wp-json\/pum\/v1","rest_nonce":null,"default_theme":"7505","debug_mode":"","disable_tracking":"","home_url":"\/","message_position":"top","core_sub_forms_enabled":"1","popups":[],"cookie_domain":"","analytics_route":"analytics","analytics_api":"https:\/\/pharmacystandards.org\/wp-json\/pum\/v1"}; var pum_sub_vars = {"ajaxurl":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php","message_position":"top"}; var pum_popups = {"pum-1342696":{"triggers":[],"cookies":[],"disable_on_mobile":false,"disable_on_tablet":false,"atc_promotion":null,"explain":null,"type_section":null,"theme_id":7505,"size":"medium","responsive_min_width":"0%","responsive_max_width":"100%","custom_width":"640px","custom_height_auto":false,"custom_height":"380px","scrollable_content":false,"animation_type":"fade","animation_speed":350,"animation_origin":"center top","open_sound":"none","custom_sound":"","location":"center top","position_top":100,"position_bottom":0,"position_left":0,"position_right":0,"position_from_trigger":false,"position_fixed":false,"overlay_disabled":false,"stackable":false,"disable_reposition":false,"zindex":1999999999,"close_button_delay":0,"fi_promotion":null,"close_on_form_submission":false,"close_on_form_submission_delay":0,"close_on_overlay_click":false,"close_on_esc_press":false,"close_on_f4_press":false,"disable_form_reopen":false,"disable_accessibility":false,"theme_slug":"default-theme","id":1342696,"slug":"exam-faq"},"pum-1334680":{"triggers":[],"cookies":[],"disable_on_mobile":false,"disable_on_tablet":false,"atc_promotion":null,"explain":null,"type_section":null,"theme_id":7505,"size":"medium","responsive_min_width":"0%","responsive_max_width":"100%","custom_width":"640px","custom_height_auto":false,"custom_height":"380px","scrollable_content":false,"animation_type":"fade","animation_speed":350,"animation_origin":"center top","open_sound":"none","custom_sound":"","location":"center top","position_top":100,"position_bottom":0,"position_left":0,"position_right":0,"position_from_trigger":false,"position_fixed":false,"overlay_disabled":false,"stackable":false,"disable_reposition":false,"zindex":1999999999,"close_button_delay":0,"fi_promotion":null,"close_on_form_submission":false,"close_on_form_submission_delay":0,"close_on_overlay_click":false,"close_on_esc_press":false,"close_on_f4_press":false,"disable_form_reopen":false,"disable_accessibility":false,"theme_slug":"default-theme","id":1334680,"slug":"scheduler"},"pum-1315235":{"triggers":[],"cookies":[],"disable_on_mobile":false,"disable_on_tablet":false,"atc_promotion":null,"explain":null,"type_section":null,"theme_id":7505,"size":"medium","responsive_min_width":"0%","responsive_max_width":"100%","custom_width":"640px","custom_height_auto":false,"custom_height":"380px","scrollable_content":false,"animation_type":"fade","animation_speed":350,"animation_origin":"center top","open_sound":"none","custom_sound":"","location":"center top","position_top":100,"position_bottom":0,"position_left":0,"position_right":0,"position_from_trigger":false,"position_fixed":false,"overlay_disabled":false,"stackable":false,"disable_reposition":false,"zindex":1999999999,"close_button_delay":0,"fi_promotion":null,"close_on_form_submission":false,"close_on_form_submission_delay":0,"close_on_overlay_click":false,"close_on_esc_press":false,"close_on_f4_press":false,"disable_form_reopen":false,"disable_accessibility":false,"theme_slug":"default-theme","id":1315235,"slug":"certification-catalog"},"pum-1063754":{"triggers":[],"cookies":[],"disable_on_mobile":false,"disable_on_tablet":false,"atc_promotion":null,"explain":null,"type_section":null,"theme_id":7505,"size":"medium","responsive_min_width":"0%","responsive_max_width":"100%","custom_width":"640px","custom_height_auto":false,"custom_height":"380px","scrollable_content":false,"animation_type":"fade","animation_speed":350,"animation_origin":"center top","open_sound":"none","custom_sound":"","location":"center top","position_top":100,"position_bottom":0,"position_left":0,"position_right":0,"position_from_trigger":false,"position_fixed":false,"overlay_disabled":false,"stackable":false,"disable_reposition":false,"zindex":1999999999,"close_button_delay":0,"fi_promotion":null,"close_on_form_submission":false,"close_on_form_submission_delay":0,"close_on_overlay_click":false,"close_on_esc_press":false,"close_on_f4_press":false,"disable_form_reopen":false,"disable_accessibility":false,"theme_slug":"default-theme","id":1063754,"slug":"quick-access-menu"},"pum-7514":{"triggers":[],"cookies":[],"disable_on_mobile":false,"disable_on_tablet":false,"atc_promotion":null,"explain":null,"type_section":null,"theme_id":7505,"size":"medium","responsive_min_width":"0%","responsive_max_width":"100%","custom_width":"640px","custom_height_auto":false,"custom_height":"380px","scrollable_content":false,"animation_type":"fade","animation_speed":350,"animation_origin":"center top","open_sound":"none","custom_sound":"","location":"center top","position_top":100,"position_bottom":0,"position_left":0,"position_right":0,"position_from_trigger":false,"position_fixed":false,"overlay_disabled":false,"stackable":false,"disable_reposition":false,"zindex":1999999999,"close_button_delay":0,"fi_promotion":null,"close_on_form_submission":false,"close_on_form_submission_delay":0,"close_on_overlay_click":false,"close_on_esc_press":false,"close_on_f4_press":false,"disable_form_reopen":false,"disable_accessibility":false,"theme_slug":"default-theme","id":7514,"slug":"report-issue"},"pum-1127653":{"triggers":[],"cookies":[],"disable_on_mobile":false,"disable_on_tablet":false,"atc_promotion":null,"explain":null,"type_section":null,"theme_id":7505,"size":"medium","responsive_min_width":"0%","responsive_max_width":"100%","custom_width":"640px","custom_height_auto":false,"custom_height":"380px","scrollable_content":false,"animation_type":"fade","animation_speed":350,"animation_origin":"center top","open_sound":"none","custom_sound":"","location":"center top","position_top":100,"position_bottom":0,"position_left":0,"position_right":0,"position_from_trigger":false,"position_fixed":false,"overlay_disabled":false,"stackable":false,"disable_reposition":false,"zindex":1999999999,"close_button_delay":0,"fi_promotion":null,"close_on_form_submission":false,"close_on_form_submission_delay":0,"close_on_overlay_click":false,"close_on_esc_press":false,"close_on_f4_press":false,"disable_form_reopen":false,"disable_accessibility":false,"theme_slug":"default-theme","id":1127653,"slug":"contact-us"}}; /* ]]> */ </script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/uploads/pum/pum-site-scripts.js?ver=1761854892" id="popup-maker-site-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-includes/js/dist/dom-ready.min.js?ver=f77871ff7694fffea381" id="wp-dom-ready-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-includes/js/dist/a11y.min.js?ver=3156534cc54473497e14" id="wp-a11y-js"></script> <script type="text/javascript" defer='defer' src="https://pharmacystandards.org/wp-content/plugins/gravityforms/js/placeholders.jquery.min.js?ver=2.9.16" id="gform_placeholder-js"></script> <script type="text/javascript" defer='defer' src="https://pharmacystandards.org/wp-content/plugins/gravityforms/assets/js/dist/vendor-theme.min.js?ver=21e5a4db1670166692ac5745329bfc80" id="gform_gravityforms_theme_vendors-js"></script> <script type="text/javascript" id="gform_gravityforms_theme-js-extra"> /* <![CDATA[ */ var gform_theme_config = {"common":{"form":{"honeypot":{"version_hash":"a01630116bbd10218121d0f4bc957585"},"ajax":{"ajaxurl":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php","ajax_submission_nonce":"5c534e7f44","i18n":{"step_announcement":"Step %1$s of %2$s, %3$s","unknown_error":"There was an unknown error processing your request. Please try again."}}}},"hmr_dev":"","public_path":"https:\/\/pharmacystandards.org\/wp-content\/plugins\/gravityforms\/assets\/js\/dist\/","config_nonce":"0cb601088f"}; /* ]]> */ </script> <script type="text/javascript" defer='defer' src="https://pharmacystandards.org/wp-content/plugins/gravityforms/assets/js/dist/scripts-theme.min.js?ver=123af0257f6f333b67adf5d27ef3db93" id="gform_gravityforms_theme-js"></script> <script type="text/javascript" id="gp-populate-anything-js-extra"> /* <![CDATA[ */ var GPPA_FORM_1 = {"SHOW_ADMIN_FIELDS_IN_AJAX":""}; var GPPA_PAGE_CONDITIONAL_LOGIC_MAP_1 = []; var GPPA = {"AJAXURL":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php","GF_BASEURL":"https:\/\/pharmacystandards.org\/wp-content\/plugins\/gravityforms","NONCE":"9e65689f7f","I18N":{"populateChoices":"Populate choices dynamically","populateValues":"Populate value dynamically","or":"Or","and":"And","filterAriaLabel":"Filter {0}","filterGroupAriaLabel":"Filter Group {0}","filterGroups":"Filter Groups","addFilter":"Add Filter","addFilterGroup":"Add Filter Group","removeFilter":"Remove Filter","removeFilterAriaLabel":"Remove Filter {0}","label":"Label","value":"Value","price":"Price","image":"Image","loadingEllipsis":"Loading...","defaultOrdering":"Default","addCustomValue":"\u270e Custom Value","standardValues":"Standard Values","formFieldValues":"Form Field Values","specialValues":"Special Values","valueBoolTrue":"(boolean) true","valueBoolFalse":"(boolean) false","valueNull":"(null) NULL","selectAnItem":"Select a %s","unique":"Only Show Unique Results","reset":"Reset","type":"Type","objectType":"Object Type","filters":"Filters","ordering":"Ordering","ascending":"Ascending","descending":"Descending","random":"Random","choiceTemplate":"Choice Template","valueTemplates":"Value Templates","operators":{"is":"is","isnot":"is not",">":">",">=":">=","<":"<","<=":"<=","contains":"contains","does_not_contain":"does not contain","starts_with":"starts with","ends_with":"ends with","like":"is LIKE","is_in":"is in","is_not_in":"is not in"},"chosen_no_results":"No results matched","restrictedObjectTypeNonPrivileged":"This field is configured to an object type for which you do not have permission to edit.","restrictedObjectTypePrivileged":"The selected Object Type is restricted. Non-super admins will not be able to edit this field's GPPA settings.","tooManyPropertyValues":"Too many values to display."}}; var GPPA_FORM_2 = {"SHOW_ADMIN_FIELDS_IN_AJAX":""}; var GPPA_PAGE_CONDITIONAL_LOGIC_MAP_2 = []; /* ]]> */ </script> <script data-minify="1" type="text/javascript" defer='defer' src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/gp-populate-anything/js/built/gp-populate-anything.js?ver=1761854892" id="gp-populate-anything-js"></script> <script type="text/javascript" defer='defer' src="https://pharmacystandards.org/wp-content/plugins/gravityforms/js/jquery.maskedinput.min.js?ver=2.9.16" id="gform_masked_input-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-events-provider-popup-maker-0ffaef2216781a6055db.js" id="googlesitekit-events-provider-popup-maker-js" defer></script> <script type="text/javascript" id="googlesitekit-events-provider-woocommerce-js-before"> /* <![CDATA[ */ window._googlesitekit.wcdata = window._googlesitekit.wcdata || {}; window._googlesitekit.wcdata.products = []; window._googlesitekit.wcdata.add_to_cart = null; window._googlesitekit.wcdata.currency = "USD"; window._googlesitekit.wcdata.eventsToTrack = ["add_to_cart","purchase"]; /* ]]> */ </script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-events-provider-woocommerce-ee7bafcdf75c8c4afac4.js" id="googlesitekit-events-provider-woocommerce-js" defer></script> <script type="text/javascript" id="cps-rename-review-js-after"> /* <![CDATA[ */ (function(){ function renameReviewButtons(root){ (root || document).querySelectorAll('input.wpProQuiz_button2[name="review"]').forEach(function(btn){ if (btn.dataset.cpsRenamed === '1') return; btn.value = 'Flag to review'; btn.setAttribute('aria-label', 'Flag to review'); btn.setAttribute('title', 'Flag to review'); btn.dataset.cpsRenamed = '1'; }); } // initial document.addEventListener('DOMContentLoaded', function(){ renameReviewButtons(); }); // handle dynamic quiz DOM updates (pagination, review mode, etc.) var mo = new MutationObserver(function(){ renameReviewButtons(); }); mo.observe(document.documentElement, { childList: true, subtree: true }); })(); /* ]]> */ </script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/themes/reign-theme/assets/js/vendors/fitvids.js?ver=1761854892" id="reign-fitvids-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/themes/reign-theme/assets/js/vendors/slick.min.js?ver=7.7.3" id="reign-slick-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/themes/reign-theme/assets/js/vendors/more-menu.js?ver=1761854892" id="reign-more-menu-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/themes/reign-theme/assets/js/vendors/sticky-sidebar.min.js?ver=7.7.3" id="reign-sticky-sidebar-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/themes/reign-theme/assets/js/vendors/sticky-kit.min.js?ver=7.7.3" id="reign-sticky-kit-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/themes/reign-theme/assets/js/vendors/jquery.cookie.js?ver=1761854892" id="reign-jquery-cookie-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/themes/reign-theme/assets/js/vendors/jquery.doubletaptogo.min.js?ver=7.7.3" id="reign-doubletaptogo-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/themes/reign-theme/assets/js/vendors/mscrollbar.min.js?ver=7.7.3" id="reign-mscrollbar-js"></script> <script type="text/javascript" id="password-strength-meter-js-extra"> /* <![CDATA[ */ var pwsL10n = {"unknown":"Password strength unknown","short":"Very weak","bad":"Weak","good":"Medium","strong":"Strong","mismatch":"Mismatch"}; /* ]]> */ </script> <script type="text/javascript" src="https://pharmacystandards.org/wp-admin/js/password-strength-meter.min.js?ver=6.8.3" id="password-strength-meter-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/themes/reign-theme/assets/js/reign-buddypress.min.js?ver=7.7.3" id="reign-buddypress-js"></script> <script type="text/javascript" id="reign-woocommerce-js-extra"> /* <![CDATA[ */ var wp_woocommerce_js_obj = {"enable_layout_view_buttons":"1","enable_myaccount_menu_toggle":""}; /* ]]> */ </script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/themes/reign-theme/assets/js/reign-woocommerce.min.js?ver=7.7.3" id="reign-woocommerce-js"></script> <script type="text/javascript" id="wp-main-js-extra"> /* <![CDATA[ */ var wp_main_js_obj = {"ajaxurl":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php","reign_more_menu_enable":"1","reign_ele_topbar":"","logged_in":"","topbar_mobile_disabled":"","reign_rtl":"","single_activity_page":"","append_text":"[Read more]","excerpt_length":"358","theme_package_id":"nouveau","reign_enable_scrollup":"","reign_scrollup_style":"style1","rg_blog_category_color":"cat_color_default","bp_subnav_view_style":"default","enable_masonry":"default-view"}; /* ]]> */ </script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/themes/reign-theme/assets/js/main.min.js?ver=7.7.3" id="wp-main-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/woocommerce-products-filter/js/ion.range-slider/js/ion.rangeSlider.min.js?ver=3.3.6.6" id="ion.range-slider-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/woocommerce-products-filter/js/tooltip/js/tooltipster.bundle.min.js?ver=3.3.6.6" id="woof_tooltip-js-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/woocommerce-products-filter/js/icheck/icheck.min.js?ver=3.3.6.6" id="icheck-jquery-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/js/html_types/radio.js?ver=1761854892" id="woof_radio_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/js/html_types/checkbox.js?ver=1761854892" id="woof_checkbox_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/js/html_types/select.js?ver=1761854892" id="woof_select_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/js/html_types/mselect.js?ver=1761854892" id="woof_mselect_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/by_author/js/by_author.js?ver=1761854892" id="woof_by_author_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/by_backorder/js/by_backorder.js?ver=1761854892" id="woof_by_backorder_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/by_featured/js/by_featured.js?ver=1761854892" id="woof_by_featured_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/by_instock/js/by_instock.js?ver=1761854892" id="woof_by_instock_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/by_onsales/js/by_onsales.js?ver=1761854892" id="woof_by_onsales_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/by_sku/js/by_sku.js?ver=1761854892" id="woof_by_sku_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/by_text/assets/js/front.js?ver=1761854892" id="woof_by_text_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/color/js/html_types/color.js?ver=1761854892" id="woof_color_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/image/js/html_types/image.js?ver=1761854892" id="woof_image_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/label/js/html_types/label.js?ver=1761854892" id="woof_label_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/sections/js/sections.js?ver=1761854892" id="woof_sections_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/select_hierarchy/js/html_types/select_hierarchy.js?ver=1761854892" id="woof_select_hierarchy_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/select_radio_check/js/html_types/select_radio_check.js?ver=1761854892" id="woof_select_radio_check_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/slider/js/html_types/slider.js?ver=1761854892" id="woof_slider_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/smart_designer/js/front.js?ver=1761854892" id="woof_sd_html_items-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/js/chosen/chosen.jquery.js?ver=1761854892" id="chosen-drop-down-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/slideout/js/jquery.tabSlideOut.js?ver=1761854892" id="woof-slideout-js-js"></script> <script data-minify="1" type="text/javascript" src="https://pharmacystandards.org/wp-content/cache/min/1/wp-content/plugins/woocommerce-products-filter/ext/slideout/js/slideout.js?ver=1761854892" id="woof-slideout-init-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver=3.28.3" id="elementor-pro-webpack-runtime-js"></script> <script type="text/javascript" id="elementor-pro-frontend-js-before"> /* <![CDATA[ */ var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php","nonce":"cba9c90ac8","urls":{"assets":"https:\/\/pharmacystandards.org\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/pharmacystandards.org\/wp-json\/"},"settings":{"lazy_load_background_images":true},"popup":{"hasPopUps":false},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"},"x-twitter":{"title":"X"},"threads":{"title":"Threads"}},"woocommerce":{"menu_cart":{"cart_page_url":"https:\/\/pharmacystandards.org\/cart\/","checkout_page_url":"https:\/\/pharmacystandards.org\/checkout\/","fragments_nonce":"890cf867a3"}},"facebook_sdk":{"lang":"en_US","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/pharmacystandards.org\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}}; /* ]]> */ </script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=3.28.3" id="elementor-pro-frontend-js"></script> <script type="text/javascript" src="https://pharmacystandards.org/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=3.28.3" id="pro-elements-handlers-js"></script> <!-- start Simple Custom CSS and JS --> <script> (function () { // Skip WooCommerce or LearnDash pages by checking common body classes var bodyClasses = document.body.className; if (/(^|\s)(woocommerce|learndash|single-sfwd-|archive-sfwd-|post-type-archive-sfwd|tax-ld|ld-lesson|ld-topic|ld-quiz)(\s|$)/.test(bodyClasses)) { return; } document.addEventListener('DOMContentLoaded', function () { // Find anchors that currently go to "#" and say "Certifications" document.querySelectorAll('a[href="#"]').forEach(function (a) { var text = (a.textContent || '').replace(/\s+/g, ' ').trim().toLowerCase(); if (text === 'certifications') { a.setAttribute('href', '/certification-catalog'); } }); }); })(); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <style id="cps-outline-styles"> .cps-outline-alert { background-color:#f8f9fa; border:1px solid #dee2e6; border-left:4px solid #00515D; border-radius:8px; padding:20px; display:flex; gap:16px; align-items:flex-start; margin:30px 0 25px; } .cps-outline-alert .cps-icon { flex:0 0 24px; height:24px; color:#00515D; margin-top:2px; } .cps-outline-alert h4 { margin:0 0 4px; font-size:1.1em; color:#212529; font-weight:700; } .cps-outline-alert p { margin:0; font-size:1em; color:#333; max-width:600px; } .cps-outline-alert .cps-actions { margin-left:auto; display:flex; gap:10px; flex-wrap:wrap; align-items:center; } .cps-btn { display:inline-flex; align-items:center; gap:8px; padding:10px 20px; border-radius:5px; text-decoration:none; font-weight:500; border:1px solid transparent; transition:.3s; white-space:nowrap; } .cps-btn-primary { background-color:#00515D; color:#fff !important; } .cps-btn-primary:hover { background-color:#003a44; color:#fff !important; } .cps-btn-ghost { background:#fff; color:#00515D; border:1px solid #dee2e6; } .cps-btn-ghost:hover { background:#f8f9fa; border-color:#ced4da; color:#00515D !important; } .cps-updated-pill { display:inline-block; font-size:.75em; font-weight:500; padding:3px 10px; border-radius:9999px; background:#e6f7f6; color:#00515D; border:1px solid #b3dfd9; margin-left:10px; position:relative; top:-2px; } .cps-legacy-tag { font-size:.75em; font-weight:500; color:#9d174d; background:#fdf2f8; border:1px solid #fbcfe8; border-radius:9999px; padding:3px 10px; margin-left:8px; position:relative; top:-2px; } .cps-legacy details { border:1px solid #dee2e6; border-radius:8px; padding:15px 20px; background:#fff; } .cps-legacy summary { cursor:pointer; font-weight:700; color:#212529; } @keyframes cpsPulse { 0%{box-shadow:0 0 0 0 rgba(0,81,93,.6);} 70%{box-shadow:0 0 0 10px rgba(0,81,93,0);} 100%{box-shadow:0 0 0 0 rgba(0,81,93,0);} } .cps-pulse{animation:cpsPulse 2s ease-out 2;} .cps-career-hub{ background:#f0f7f7; border:1px solid #b3dfd9; border-left:4px solid #00515D; border-radius:8px; padding:20px; display:flex; gap:20px; align-items:center; margin:25px 0 35px; flex-wrap:wrap; } .cps-career-hub .cps-icon{ flex:0 0 32px; height:32px; color:#00515D; } .cps-career-hub .cps-text-content{ flex:1 1 400px; } .cps-career-hub h4{ margin:0 0 4px; font-size:1.1em; color:#212529; font-weight:700; } .cps-career-hub p{ margin:0; font-size:1em; color:#333; max-width:600px; line-height:1.5; } .cps-career-hub .cps-actions{ margin-left:auto; } .cps-btn i.fa-solid { width:1em; height:1em; } .live-jobs-container{ border:1px solid #e0e0e0; border-radius:8px; padding:20px; margin-top:30px; background:#f9f9f9; } .live-jobs-container h3{ margin-top:0; color:#00515D; border-bottom:2px solid #e0e0e0; padding-bottom:10px; } .live-jobs-container ul{ list-style:none; padding:0; margin:0; } .live-jobs-container li{ padding:10px 0; border-bottom:1px solid #e0e0e0; } .live-jobs-container li:last-child{ border-bottom:none; } .live-jobs-container a{ text-decoration:none; color:#006C7C; font-weight:bold; } .live-jobs-container a:hover{ text-decoration:underline; } .job-location{ font-style:italic; color:#555; margin-left:10px; } .non-pharmacist-notice { background-color: #fffaf0; border: 1px solid #feedc3; border-left: 5px solid #D4A22A; padding: 20px; border-radius: 8px; margin: 25px 0; font-size: 1.1em; } .non-pharmacist-notice p { margin: 0; color: #212529; } .non-pharmacist-notice strong { color: #212529; } .special-consideration-pathway-wrapper { margin-top: 40px; } .special-consideration-pathway-wrapper h2 { font-size: 1.8em !important; color: #212529 !important; margin-bottom: 20px !important; } .special-consideration-pathway { background-color: #f0f5f6; border-radius: 12px; padding: 30px; border-left: 5px solid #D4A22A; } .special-consideration-pathway h3 { font-size: 1.5em !important; margin-top: 0 !important; margin-bottom: 15px !important; color: #00515D !important; } .special-consideration-pathway h3:not(:first-of-type){ margin-top: 40px !important; padding-top: 30px !important; border-top: 1px solid #dee2e6 !important; } .special-consideration-pathway ul { list-style: none !important; padding-left: 0 !important; margin-top: 15px !important; margin-bottom: 0 !important; } .special-consideration-pathway li { padding-left: 30px !important; position: relative; margin-bottom: 10px !important; } .special-consideration-pathway li:last-child { margin-bottom: 0 !important; } .special-consideration-pathway li::before { content: '▪'; color: #D4A22A; font-weight: bold; font-size: 1.5em; position: absolute; left: 0; top: -5px; } .special-consideration-pathway p, .special-consideration-pathway li { font-size: 1.1em !important; line-height: 1.6 !important; color: #495057 !important; } .special-consideration-pathway p { margin-top: 0; margin-bottom: 1em; } </style> <script> (function(){ function ready(fn){ document.readyState === 'loading' ? document.addEventListener('DOMContentLoaded', fn) : fn(); } function safe(fn){ try{ fn(); } catch(e){ } } function ensureFontAwesome(){ if (document.querySelector('link[href*="font-awesome"], link[href*="fontawesome"]')) return; if (window.FontAwesome || document.querySelector('.fa-solid')) return; const ln=document.createElement('link'); ln.rel='stylesheet'; ln.href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css'; ln.crossOrigin='anonymous'; ln.referrerPolicy='no-referrer'; document.head.appendChild(ln); } const once = (el, key) => { if(!el || el.dataset[key]==='1') return false; el.dataset[key]='1'; return true; }; const qsa = (sel, root=document) => Array.prototype.slice.call(root.querySelectorAll(sel)); const interdisciplinaryCerts = { 'caeps':{coreFocus:"This certification validates the ability to leverage artificial intelligence (AI), machine learning (ML), and predictive analytics to drive strategic decision-making in pharmacy.",idealProfessionals:["Data Scientists","Business Intelligence (BI) Developers","Healthcare IT Strategists and Consultants","Healthcare Administrators with a technology focus"],requiredExperience:["Developing, implementing, or managing predictive models to solve clinical or operational problems (e.g., predicting medication non-adherence, identifying high-risk patients).","Utilizing data visualization platforms (like Tableau, Power BI) to translate complex data into actionable strategic insights for leadership.","Applying AI/ML concepts within the healthcare data landscape, including an understanding of data governance, ethics, and model validation.","Contributing to strategic planning that involves the procurement and deployment of advanced analytical technologies."]}, 'cbbs':{coreFocus:"This certification validates a deep understanding of the complex clinical, manufacturing, and regulatory landscape of biologic and biosimilar therapies.",idealProfessionals:["Medical Science Liaisons (MSLs)","Clinical Nurse Specialists (especially in immunology, oncology, or rheumatology)","Regulatory Affairs Professionals","Physician Assistants (PAs) and Nurse Practitioners (NPs) in specialty practice"],requiredExperience:["Educating healthcare providers on the scientific and clinical data supporting biologics and biosimilars.","Critically evaluating clinical literature on topics like immunogenicity, extrapolation of indications, and interchangeability.","Contributing to formulary decision-making processes (e.g., P&T committee reviews) for these agents.","Navigating the regulatory framework for biologics, including the FDA's Purple Book and the approval pathways for biosimilar products."]}, 'ccp-340b':{coreFocus:"This certification validates expertise in managing the federal 340B Drug Pricing Program, ensuring program integrity, audit readiness, and financial optimization.",idealProfessionals:["340B Program Managers, Coordinators, or Analysts","Healthcare Finance and Revenue Cycle Managers","Internal Auditors and Compliance Specialists"],requiredExperience:["Overseeing 340B drug purchasing, inventory management, and replenishment.","Developing and maintaining policies and procedures to prevent drug diversion and duplicate discounts.","Conducting internal audits and preparing for external audits by the Health Resources and Services Administration (HRSA).","Managing program compliance across various settings, including mixed-use clinics and contract pharmacy arrangements."]}, 'cdts':{coreFocus:"This certification is for professionals who manage the implementation, integration, and evaluation of Digital Therapeutics (DTx) and other digital health tools within clinical care.",idealProfessionals:["IT Project Managers","Clinical Application and Implementation Specialists","Digital Health Product Managers","Telehealth Program Coordinators"],requiredExperience:["Managing the lifecycle of a clinical technology project, from vendor selection and implementation to post-launch support.","Working directly with clinical teams to integrate digital tools (e.g., patient-facing apps, remote monitoring devices) into established patient care workflows.","Understanding the unique privacy, security, and regulatory considerations for Software as a Medical Device (SaMD).","Training and supporting both patients and providers on the use of new digital health platforms."]}, 'ceop':{coreFocus:"This certification demonstrates expertise in configuring, customizing, and improving the medication-related functionalities of an Electronic Health Record (EHR) system to enhance safety and efficiency.",idealProfessionals:["Clinical or Health Informatics Specialists (Informatics Nurses are common)","EHR Application Analysts (e.g., certified in Epic Willow, Cerner PharmNet)","Health IT Consultants"],requiredExperience:["Building, testing, and maintaining medication records, clinical order sets, and dispensing logic.","Designing and implementing Clinical Decision Support (CDS) rules, such as allergy alerts, drug-interaction checks, and dosing guidance.","Optimizing workflows for key medication processes like prescribing, verifying, administering, and reconciling medications.","Troubleshooting system issues, providing support to end-users, and managing system updates or upgrades."]}, 'cmso':{coreFocus:"This certification is for leaders dedicated to preventing medication errors and fostering a culture of safety within a healthcare organization.",idealProfessionals:["Registered Nurses (especially those in Quality, Risk, or Leadership roles)","Patient Safety Officers and Risk Managers","Quality Improvement Professionals"],requiredExperience:["Analyzing medication error data and leading root cause analyses (RCAs) of adverse drug events.","Designing and implementing medication safety initiatives (e.g., smart pump guardrails, barcode administration systems, high-alert medication protocols).","Serving on and contributing to key committees, such as the Pharmacy & Therapeutics (P&T) Committee or a dedicated Medication Safety Committee."]}, 'cpso':{coreFocus:"This certification is for professionals in the pharmaceutical/biotech industry who monitor and evaluate adverse drug events.",idealProfessionals:["Drug Safety/Pharmacovigilance Associates","Medical Information Specialists","Clinical Research Associates (CRAs)"],requiredExperience:["Processing and assessing case safety reports (ICSRs).","Conducting signal detection and risk evaluation.","Contributing to aggregate safety reports (e.g., PADERs, PSURs)."]}, 'cpas':{coreFocus:"This certification validates skills in auditing pharmacy claims and billing practices.",idealProfessionals:["Healthcare Auditors","PBM Auditors","Revenue Integrity Analysts"],requiredExperience:["Performing audits of pharmacy claims.","Identifying billing discrepancies and non-compliance.","Interpreting PBM contracts and payer rules."]}, 'cpbrs':{coreFocus:"This certification validates expertise in the pharmacy revenue cycle, from claims to denials.",idealProfessionals:["Revenue Cycle Specialists","Medical Coders (pharmacy focus)","Prior Authorization Coordinators"],requiredExperience:["Submitting pharmacy claims to various payers.","Applying coding systems like HCPCS, NDCs, and CPT codes.","Managing prior authorizations and appealing denied claims."]}, 'cpco':{coreFocus:"This certification is for professionals who manage a pharmacy's overall compliance program.",idealProfessionals:["Healthcare Compliance Officers","Privacy Officers","In-house Counsel"],requiredExperience:["Developing a compliance program based on OIG guidance.","Conducting enterprise-wide risk assessments.","Managing internal compliance investigations."]}, 'cpdpo':{coreFocus:"This certification focuses on protecting patient health information (PHI) in pharmacy systems.",idealProfessionals:["Healthcare Privacy Officers","HIM Directors","IT Security Analysts"],requiredExperience:["Implementing and enforcing HIPAA/HITECH policies.","Conducting privacy impact assessments.","Leading data breach investigations and responses."]}, 'cpia':{coreFocus:"This certification is for data professionals who analyze and report on data from pharmacy information systems.",idealProfessionals:["Data Analysts/Report Writers","BI Analysts","Health IT Data Specialists"],requiredExperience:["Writing SQL queries.","Using reporting tools like Tableau or Power BI.","Analyzing data for drug utilization reviews, cost-analysis, etc."]}, 'cples':{coreFocus:"This certification demonstrates mastery of laws, regulations, and ethics governing pharmacy practice.",idealProfessionals:["Healthcare Attorneys/Paralegals","Compliance Officers with legal backgrounds"],requiredExperience:["Providing legal counsel to pharmacies.","Interpreting federal and state pharmacy statutes.","Drafting pharmacy-related policies and contracts."]}, 'cpom':{coreFocus:"This certification is for leaders who oversee the daily operational efficiency of a pharmacy department.",idealProfessionals:["Lead/Supervisory Pharmacy Technicians","Healthcare Operations Managers","Clinic/Practice Managers"],requiredExperience:["Workflow optimization.","Staff management (scheduling, training, evaluations).","Managing pharmacy automation and technology.","Financial oversight and budgeting."]}, 'cppa':{coreFocus:"This certification is for professionals who analyze and develop policies affecting drug reimbursement and access.",idealProfessionals:["Health Policy Analysts","Government Affairs Specialists","Public Health Advisors"],requiredExperience:["Working for a managed care organization or government agency.","Researching and writing policy briefs.","Analyzing the impact of pharmacy-related policies."]}, 'cprs':{coreFocus:"This certification is for professionals who navigate the drug approval and marketing process with agencies like the FDA.",idealProfessionals:["Regulatory Affairs Specialists","Quality Assurance (QA) Specialists"],requiredExperience:["Preparing regulatory submissions (e.g., IND, NDA).","Serving as a liaison with health authorities.","Reviewing promotional materials for compliance."]}, 'cpscm':{coreFocus:"This certification recognizes expertise in managing the end-to-end pharmaceutical supply chain.",idealProfessionals:["Supply Chain/Materials Managers","Procurement Specialists","Healthcare Logistics Coordinators"],requiredExperience:["Strategic sourcing and GPO relationship management.","Inventory control and optimization.","Drug shortage management.","DSCSA compliance and logistics."]}, 'cphpa':{coreFocus:"This certification validates expertise in using large-scale health data to analyze medication-related trends across populations.",idealProfessionals:["Population Health Analysts","Epidemiologists","Health Outcomes Researchers","Data Scientists"],requiredExperience:["Working with large datasets like medical/pharmacy claims.","Using statistical software (R, Python, SAS).","Measuring program impact on HEDIS measures, readmissions, etc."]}, 'cras':{coreFocus:"This certification is for professionals who navigate the drug approval, marketing, and lifecycle management process with government agencies like the FDA.",idealProfessionals:["Regulatory Affairs Specialists, Associates, and Managers","Quality Assurance (QA) Specialists"],requiredExperience:["Preparing or contributing to regulatory submissions (e.g., IND, NDA, BLA).","Serving as a liaison between the company and regulatory health authorities.","Reviewing labeling, advertising, and promotional materials for regulatory compliance.","Ensuring adherence to Good Manufacturing Practices (GMP) or Good Clinical Practices (GCP)."]}, 'ctcs':{coreFocus:"This certification is for professionals who coordinate patient care during movements between healthcare settings.",idealProfessionals:["Registered Nurses (Case Managers, Discharge Planners)","Licensed Clinical Social Workers (LCSW)","NPs and PAs"],requiredExperience:["Performing patient assessments for transition barriers.","Developing patient-centered discharge plans.","Conducting medication reconciliation.","Coordinating with post-discharge providers."]}, 'cuco':{coreFocus:"This certification validates expertise in implementing USP <800> standards for hazardous drug handling.",idealProfessionals:["Environmental Health & Safety (EHS) Managers","Industrial Hygienists","Safety Officers"],requiredExperience:["Developing and implementing a Hazardous Drug Safety Plan.","Conducting assessments of risk for NIOSH drugs.","Overseeing engineering controls and PPE usage."]}, 'cvcs':{coreFocus:"This certification validates specialized skills in preparing customized medications for animal patients.",idealProfessionals:["Doctors of Veterinary Medicine (DVMs)","Licensed/Certified Veterinary Technicians (LVT/CVT)"],requiredExperience:["Formulating and preparing non-sterile compounded medications for animals.","Applying USP <795> principles in a veterinary context.","Understanding physiological differences between species.","Selecting safe and effective excipients for animals."]} }; function findObjectivesContainer(){ return document.querySelector('#objectives.tab-content') || document.querySelector('#objectives') || document.querySelector('[data-tab="objectives"]') || null; } function findCareerContainer(){ let el = document.getElementById('career-path') || document.getElementById('career') || document.getElementById('careers'); if (el) return el; const pools = qsa('.tab-content, .tab-pane, .elementor-tab-content'); for (const n of pools){ const id=(n.id||'').toLowerCase(); const txt=(n.textContent||'').toLowerCase(); if (id.includes('career') || /career path|career/i.test(txt)) return n; } for (const n of qsa('[id]')){ const id=(n.id||'').toLowerCase(); if (id.includes('career')) return n; } return null; } function findResourcesContainer(){ let el = document.getElementById('resources'); if (el) return el; const pools = qsa('.tab-content, .tab-pane, .elementor-tab-content'); for (const n of pools){ const id=(n.id||'').toLowerCase(); const txt=(n.textContent||'').toLowerCase(); if (id.includes('resource') || txt.includes('study resources')) return n; } return null; } function findEligibilityContainer(){ return document.querySelector('#eligibility.tab-content') || document.querySelector('#eligibility') || document.querySelector('[data-tab="eligibility"]') || null; } function enhanceObjectives(container){ if (!container || !once(container,'cpsEnhanced')) return; const findOutlineLink = (c)=>{ let a=c.querySelector('.download-box a[href*="content-outline"]'); if (a) return a; a = qsa('.download-box a, a', c).find(x=>/content outline/i.test(x.textContent||'')) || null; return a; }; const outlineLink = findOutlineLink(container); if (!outlineLink) return; const alert=document.createElement('div'); alert.className='cps-outline-alert'; alert.innerHTML = ` <div class="cps-icon" aria-hidden="true"><i class="fa-solid fa-circle-info" style="font-size:24px;color:#00515D;"></i></div> <div> <h4>These domains & tasks are a legacy snapshot</h4> <p>We routinely refine exam blueprints. The always-updated <em>Content Outline</em> is the source of truth for current domains, tasks, and weights.</p> </div> <div class="cps-actions"> <a class="cps-btn cps-btn-ghost" href="#legacy-objectives">Show legacy</a> <a class="cps-btn cps-btn-primary cps-pulse" href="${outlineLink.href}"> <span>View Latest Blueprint</span> <i class="fa-solid fa-arrow-right" aria-hidden="true"></i> </a> </div>`; container.prepend(alert); const h3 = qsa('h3', container).find(h=>/content outline/i.test(h.textContent||'')); if (h3){ const pill=document.createElement('span'); pill.className='cps-updated-pill'; pill.textContent='Checking update…'; h3.appendChild(pill); safe(()=>fetch(outlineLink.href,{method:'HEAD',credentials:'same-origin'}) .then(r=>r.headers.get('last-modified')) .then(d=>{ if(!d){ pill.textContent='Updated'; return; } const nice=new Date(d).toLocaleDateString(undefined,{year:'numeric',month:'short',day:'numeric'}); pill.textContent='Updated '+nice; }) .catch(()=>{ pill.textContent='Updated'; }) ); } const dlBox = container.querySelector('.download-box'); const legacy=document.createElement('div'); legacy.className='cps-legacy'; legacy.id='legacy-objectives'; const details=document.createElement('details'); details.open=false; const summary=document.createElement('summary'); summary.innerHTML=`Show legacy objectives <span class="cps-legacy-tag">Superseded</span>`; const inner=document.createElement('div'); details.appendChild(summary); const toMove=[]; for (const node of Array.from(container.children)){ if (node===dlBox) break; if (node===alert) continue; toMove.push(node); } toMove.forEach(n=>inner.appendChild(n)); details.appendChild(inner); legacy.appendChild(details); if (dlBox) container.insertBefore(legacy, dlBox); else container.appendChild(legacy); alert.querySelector('.cps-btn-ghost').addEventListener('click', function(e){ e.preventDefault(); details.open=true; details.scrollIntoView({behavior:'smooth', block:'start'}); }); } function enhanceCareerPath(container){ if (!container || !once(container,'cpsCareerEnhanced')) return; const hubBanner=document.createElement('div'); hubBanner.className='cps-career-hub'; hubBanner.innerHTML=` <div class="cps-icon" aria-hidden="true"><i class="fa-solid fa-briefcase" style="font-size:32px;color:#00515D;"></i></div> <div class="cps-text-content"> <h4>Explore Your Career Trajectory</h4> <p>Discover how this certification fits into your professional journey. Our Career Pathways Hub provides interactive tools and resources to help you map out your next steps.</p> </div> <div class="cps-actions"> <a href="https://pharmacystandards.org/pharmacy-career-pathways-hub/" class="cps-btn cps-btn-primary"> <span>Visit the Hub</span> <i class="fa-solid fa-arrow-right" aria-hidden="true"></i> </a> </div>`; const h2 = container.querySelector('h2, .h2, [role="heading"][aria-level="2"]'); if (h2 && h2.parentElement===container) h2.after(hubBanner); else container.prepend(hubBanner); } function enhanceResources(container){ if (!container) return; const grid = container.querySelector('.content-grid'); if (!grid || grid.dataset.cpsRefsInjected==='1') return; const parts = location.pathname.replace(/\/+$/,'').split('/'); const pageSlug = parts[parts.length-1] || ''; if (!pageSlug) return; const refUrl = `${location.origin}/exam-references-${pageSlug}/`; const card=document.createElement('div'); card.className='info-box cps-exam-ref'; card.innerHTML=` <h3 style="margin-top:0;border-bottom:1px solid #dee2e6;padding-bottom:10px;">Exam References & How to Prepare</h3> <p style="margin:14px 0;"> Access the official reading list, policies, and study guidance used to design the exam. Learn how to structure a 4–6 week prep plan, focus on high-value topics, and avoid common pitfalls. </p> <a class="btn" href="${refUrl}" aria-label="Open Exam References and Prep Guide">Open References & Prep Guide</a> `; const cards = qsa('.info-box', grid); if (cards.length >= 3) { cards[2].after(card); } else { grid.appendChild(card); } safe(()=>fetch(refUrl,{method:'HEAD',credentials:'same-origin'}).then(r=>{ if(!r.ok) card.remove(); })); grid.dataset.cpsRefsInjected='1'; } function enhanceEligibility(container){ if (!container || !once(container, 'cpsEligibilityEnhanced')) return; const pageSlug = location.pathname.toLowerCase(); let certData = null; // Find the matching cert by checking if the slug contains the key (acronym) for (const key in interdisciplinaryCerts) { if (pageSlug.includes('-' + key + '/') || pageSlug.endsWith('-' + key)) { certData = interdisciplinaryCerts[key]; break; } } if (!certData) return; // Not an interdisciplinary cert, do nothing. // 1. Create and inject the notice banner const notice = document.createElement('div'); notice.className = 'non-pharmacist-notice'; notice.innerHTML = `<p><strong>Note for Interdisciplinary Professionals:</strong> Specific eligibility pathways for non-pharmacists are detailed below.</p>`; const firstHeading = container.querySelector('h2, .h2, [role="heading"][aria-level="2"]'); if(firstHeading) { firstHeading.after(notice); } else { container.prepend(notice); } // 2. Create and inject the detailed pathway box const wrapper = document.createElement('div'); wrapper.className = 'special-consideration-pathway-wrapper'; wrapper.innerHTML = ` <h2>Special Consideration: Eligibility for Interdisciplinary Professionals</h2> <div class="special-consideration-pathway"> <p>We recognize that the pharmacy landscape is a collaborative, interdisciplinary environment. While the core of our certification portfolio is designed for pharmacists, excellence in many specialized areas—such as compliance, informatics, safety, and management—is achieved through the contributions of professionals from diverse backgrounds.</p> <p>Therefore, eligibility for this certification is extended to non-pharmacist professionals who hold key roles integral to or adjacent to pharmacy practice. This may include, but is not limited to, the professionals listed below.</p> <h3>Core Focus</h3> <p>${certData.coreFocus}</p> <h3>Ideal Non-Pharmacist Professionals</h3> <ul>${certData.idealProfessionals.map(prof => `<li>${prof}</li>`).join('')}</ul> <h3>Required Experience & Knowledge</h3> <ul>${certData.requiredExperience.map(exp => `<li>${exp}</li>`).join('')}</ul> </div> `; const pathwayBoxes = qsa('.pathway-box, .info-box', container); const lastPathwayBox = pathwayBoxes.length > 0 ? pathwayBoxes[pathwayBoxes.length - 1] : null; if (lastPathwayBox && lastPathwayBox.parentElement) { lastPathwayBox.after(wrapper); } else { container.appendChild(wrapper); } } function runObjectives(){ safe(()=>{ const el=findObjectivesContainer(); if(el) enhanceObjectives(el); }); } function runCareer(){ safe(()=>{ const el=findCareerContainer(); if(el) enhanceCareerPath(el); }); } function runResources(){ safe(()=>{ const el=findResourcesContainer(); if(el) enhanceResources(el); }); } function runEligibility(){ safe(()=>{ const el=findEligibilityContainer(); if(el) enhanceEligibility(el); }); } function runAll(){ runObjectives(); runCareer(); runResources(); runEligibility(); } function bindTabActivations(){ document.addEventListener('click', (e)=>{ const t = e.target && e.target.closest && e.target.closest('a,[role="tab"],button'); if(!t) return; const txt=(t.textContent||'').toLowerCase(); const href=(t.getAttribute && (t.getAttribute('href')||'')) || ''; if (txt.includes('career') || /career/.test(href)) setTimeout(runCareer,50); if (txt.includes('resource') || /resource/.test(href)) setTimeout(runResources,50); if (txt.includes('eligibility') || /eligibility/.test(href)) setTimeout(runEligibility,50); }); const obs = new MutationObserver(()=>{ runAll(); }); qsa('.tab-content, .elementor-tab-content, .tab-pane').forEach(node=>{ try{ obs.observe(node, { childList:true, subtree:true }); }catch(_){} }); } ready(()=>{ ensureFontAwesome(); runAll(); const globalObs = new MutationObserver(()=>runAll()); try{ globalObs.observe(document.body, { childList:true, subtree:true }); }catch(_){} bindTabActivations(); }); })(); </script><!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script> (function () { // Only on Woo checkout page if (!document.body || !document.body.classList.contains('woocommerce-checkout')) return; // Build Woo AJAX URL for remove_from_cart function wcAjaxUrl(endpoint){ try { if (window.wc_cart_params && wc_cart_params.wc_ajax_url) { return wc_cart_params.wc_ajax_url.replace('%%endpoint%%', endpoint); } } catch(e){} // Fallback if params missing return (location.origin + '/?wc-ajax=' + endpoint); } // Extract cart_item_key from a "remove_item" URL function getCartItemKeyFromHref(href){ try { var u = new URL(href, location.origin); return u.searchParams.get('remove_item'); } catch(e) { return null; } } // Delegate clicks on any red-X remove link in order review document.addEventListener('click', function (e) { const a = e.target.closest( '.woocommerce-checkout-review-order .product-remove a, ' + '.woocommerce-checkout-review-order a.remove, ' + '.shop_table .product-remove a, a.remove' ); if (!a) return; const key = getCartItemKeyFromHref(a.getAttribute('href') || ''); if (!key) return; // let default behaviour continue if we can't parse e.preventDefault(); e.stopPropagation(); // POST to Woo AJAX: remove_from_cart const url = wcAjaxUrl('remove_from_cart'); const body = new URLSearchParams({ cart_item_key: key }); fetch(url, { method: 'POST', credentials: 'same-origin', headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}, body }) .then(function(res){ return res.ok ? res.json().catch(()=> ({})) : Promise.reject(); }) .then(function(){ // Refresh checkout fragments & totals without full page reload if (window.jQuery && jQuery(document.body).trigger) { jQuery(document.body).trigger('wc_fragment_refresh'); jQuery(document.body).trigger('update_checkout'); jQuery(document.body).trigger('removed_from_cart', [key]); } else { // Minimal fallback: remove row and soft refresh by re-running payment/totals const row = a.closest('tr, .cart_item'); if (row) row.parentNode.removeChild(row); } }) .catch(function(){ // Last resort if AJAX fails location.href = a.href; }); }, true); })(); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script> (function () { // 1) Only on Woo single product pages if (!document.body.classList.contains('single-product')) return; // 2) Inject strong CSS to beat theme overrides (scoped to single-product) if (!document.getElementById('cps-handbook-btn-css')) { const css = ` body.single-product .wp-block-button a.cps-handbook-btn{ display:inline-flex !important; align-items:center !important; gap:.5rem !important; padding:.875rem 1.25rem !important; margin:.75rem 0 1.25rem 0 !important; background:#0f766e !important; color:#fff !important; border:none !important; border-radius:9999px !important; box-shadow:0 1px 2px rgba(0,0,0,.08) !important; text-decoration:none !important; line-height:1.2 !important; font-weight:600 !important; transition:transform .12s ease, box-shadow .12s ease, background-color .12s ease !important; } body.single-product .wp-block-button a.cps-handbook-btn:hover{ transform:translateY(-1px) !important; box-shadow:0 6px 20px rgba(0,0,0,.12) !important; background:#0b5f59 !important; } body.single-product .wp-block-button a.cps-handbook-btn:focus{ outline:2px solid #14b8a6 !important; outline-offset:2px !important; } body.single-product .wp-block-button{ margin:0 !important; padding:0 !important; } body.single-product .wp-block-buttons{ gap:.5rem !important; } @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap'); .woocommerce-Tabs-panel--description { font-family: 'Inter', sans-serif; background-color: #ffffff; border-radius: 12px; padding: 2rem; box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05), 0 4px 6px -2px rgba(0, 0, 0, 0.04); border: 1px solid #e2e8f0; } .woocommerce-Tabs-panel--description h2 { font-size: 1.75rem; font-weight: 700; color: #1d3557; margin: 0 0 2rem 0; padding-bottom: 0.75rem; border-bottom: 2px solid #e2e8f0; } .woocommerce-Tabs-panel--description .wp-block-tabs { display: flex; flex-direction: column; gap: 2.5rem; } .woocommerce-Tabs-panel--description .wp-block-tab:not(:last-of-type) > p:first-of-type { font-size: 1.125rem; font-weight: 500; color: #2c5282; margin-bottom: 1rem; } .woocommerce-Tabs-panel--description .wp-block-tab ul { list-style: none !important; padding-left: 0 !important; margin-top: 1rem; display: flex; flex-direction: column; gap: 1rem; } .woocommerce-Tabs-panel--description .wp-block-tab ul li { display: flex; align-items: flex-start; font-size: 1rem; color: #4a5568; line-height: 1.6; padding-left: 36px; position: relative; } .woocommerce-Tabs-panel--description .wp-block-tab ul li::before { display: block !important; content: '' !important; height: 22px !important; width: 22px !important; position: absolute; left: 0; top: 2px; background-repeat: no-repeat !important; background-position: center !important; background-size: contain !important; background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%2300515d"><path fill-rule="evenodd" d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm13.36-1.814a.75.75 0 10-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 00-1.06 1.06l2.25 2.25a.75.75 0 001.14-.094l3.75-5.25z" clip-rule="evenodd" /></svg>') !important; } .woocommerce-Tabs-panel--description .cps-handbook-btn { display: inline-flex; align-items: center; gap: 0.65rem; background-color: #00515d; color: white !important; padding: 0.75rem 1.5rem; border-radius: 8px; font-weight: 600; text-decoration: none; transition: all 0.2s ease-in-out; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); margin-top: 1rem; } .woocommerce-Tabs-panel--description .cps-handbook-btn:hover { background-color: #003a44; transform: translateY(-2px); box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } .woocommerce-Tabs-panel--description .cps-handbook-btn svg { width: 1.25rem; height: 1.25rem; } .woocommerce-Tabs-panel--description .wp-block-tab:last-of-type p { color: #4a5568; line-height: 1.7; } .woocommerce-Tabs-panel--description .wp-block-tab:last-of-type strong { display: block; font-weight: 600; color: #1d3557; margin-top: 1.5rem; margin-bottom: 0.5rem; } .woocommerce-Tabs-panel--description .wp-block-tab:last-of-type p:first-of-type strong { margin-top: 0; } `; const style = document.createElement('style'); style.id = 'cps-handbook-btn-css'; style.textContent = css; document.head.appendChild(style); } // 3) Find the default Candidate Handbook button(s) const candidates = Array.from(document.querySelectorAll( 'a.wp-block-button__link[href$="candidate-handbook.pdf"], a[href$="/candidate-handbook.pdf"]' )); if (!candidates.length) return; // 4) Derive the product slug from the URL const segs = window.location.pathname.split('/').filter(Boolean); if (!segs.length) return; let slug = segs[segs.length - 1]; // Trim common suffixes to get the clean certification slug const suffixes = [ '-exam-registration', '-exam-access', '-exam-signup', '-exam', '-registration' ]; for (const suf of suffixes) { if (slug.endsWith(suf)) { slug = slug.slice(0, -suf.length); break; } } // 5) Build the new PDF link const newHref = `/handbook/candidate-handbook-${slug}.pdf`; // 6) Apply URL + styling + icon candidates.forEach(a => { a.href = newHref; a.rel = 'noopener'; a.classList.add('cps-handbook-btn'); // enables our strong CSS // Clear conflicting classes/inline styles added by theme/blocks a.classList.remove('has-background','has-text-color','is-style-outline'); a.removeAttribute('style'); // Ensure readable text if (!a.textContent.trim()) a.textContent = 'Download Candidate Handbook'; // Add a small download icon if not present if (!a.querySelector('svg[data-handbook-icon]')) { const svg = document.createElementNS('http://www.w3.org/2000/svg','svg'); svg.setAttribute('data-handbook-icon',''); svg.setAttribute('viewBox','0 0 24 24'); svg.setAttribute('aria-hidden','true'); svg.classList.add('w-5','h-5'); svg.style.width = '1.1rem'; svg.style.height = '1.1rem'; svg.innerHTML = '<path fill="currentColor" d="M12 3a1 1 0 0 1 1 1v9.586l2.293-2.293a1 1 0 1 1 1.414 1.414l-4 4a1 1 0 0 1-1.414 0l-4-4A1 1 0 1 1 8.707 11.293L11 13.586V4a1 1 0 0 1 1-1Zm-7 15a1 1 0 0 1 1-1h12a1 1 0 1 1 0 2H6a1 1 0 0 1-1-1Z"/>'; a.prepend(svg); } }); })(); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <!-- Fix any ...file.pdf/ -> ...file.pdf links on the page --> <script> (function () { "use strict"; function fixAttr(el, attr) { if (!el.hasAttribute(attr)) return; var v = el.getAttribute(attr); if (!v) return; // Only remove the slash immediately after ".pdf" (before ?, #, quote or end) var nv = v.replace(/\.pdf\/(?=(?:$|[?#'"]))/gi, ".pdf"); if (nv !== v) el.setAttribute(attr, nv); } function scan(root) { var sel = [ 'a[href*=".pdf/"]', 'iframe[src*=".pdf/"]', 'embed[src*=".pdf/"]', 'link[href*=".pdf/"]', 'img[src*=".pdf/"]', 'source[src*=".pdf/"]', 'object[data*=".pdf/"]' ].join(","); root.querySelectorAll(sel).forEach(function (el) { fixAttr(el, "href"); fixAttr(el, "src"); fixAttr(el, "data"); }); } // Initial pass after DOM is ready if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function(){ scan(document); }); } else { scan(document); } // Also fix content injected later (Elementor/lazy loaders) var mo = new MutationObserver(function (muts) { muts.forEach(function (m) { m.addedNodes.forEach(function (n) { if (n.nodeType === 1) scan(n); }); if (m.type === "attributes" && ["href","src","data"].includes(m.attributeName)) { fixAttr(m.target, m.attributeName); } }); }); mo.observe(document.documentElement, { childList: true, subtree: true, attributes: true, attributeFilter: ["href","src","data"] }); })(); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <!-- Optional: load FA6 if your theme doesn't already load Font Awesome --> <link rel="stylesheet" integrity="sha512-wZ7X..." crossorigin="anonymous" referrerpolicy="no-referrer" data-pmdelayedstyle="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css"> <style> .sub-menu .wrapper #header-my-account-menu { padding: 8px 10px; } .sub-menu .wrapper #header-my-account-menu li { margin: 4px 0; } .sub-menu .wrapper #header-my-account-menu li a { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 10px; text-decoration: none; color: #334155; transition: background .2s ease, transform .15s ease, color .2s ease; } .sub-menu .wrapper #header-my-account-menu li a:hover, .sub-menu .wrapper #header-my-account-menu li a:focus { background: #f1f5f9; color: #0f172a; transform: translateX(2px); outline: none; } .sub-menu .wrapper #header-my-account-menu li a .menu-icon { width: 1.15em; text-align: center; font-size: 1.05rem; opacity: .9; } .sub-menu .wrapper #header-my-account-menu li a:hover .menu-icon { opacity: 1; } </style> <script> document.addEventListener('DOMContentLoaded', function () { const menu = document.querySelector('#header-my-account-menu'); if (!menu) return; // Utility: get visible label (prefers <span>, falls back to text) const getLabel = (a) => { const span = a.querySelector('span'); return (span ? span.textContent : a.textContent).trim().toLowerCase(); }; // Utility: set visible label but preserve any icons const setLabel = (a, newText) => { const span = a.querySelector('span'); if (span) { span.textContent = newText; return; } // Replace only text nodes, keep <i> intact a.childNodes.forEach(n => { if (n.nodeType === Node.TEXT_NODE) n.nodeValue = ' ' + newText + ' '; }); }; // Utility: replace icon (remove old <i>, prepend new) const setIcon = (a, faName) => { a.querySelectorAll('i').forEach(i => i.remove()); const i = document.createElement('i'); // Support FA5/FA6 (fas) + classic (fa) i.className = 'fa-solid fa-' + faName + ' fas fa-' + faName + ' fa menu-icon'; i.setAttribute('aria-hidden', 'true'); a.prepend(i); }; // 1) Remove Notifications item by class or label menu.querySelectorAll('li').forEach(li => { const a = li.querySelector('a'); if (!a) return; const isNotifClass = li.classList.contains('bp-notifications-nav'); const isNotifLabel = getLabel(a) === 'notifications'; if (isNotifClass || isNotifLabel) li.remove(); }); // 2) Iterate links and apply transformations menu.querySelectorAll('a').forEach(a => { const label = getLabel(a); if (label === 'candidate dashboard') { a.href = location.origin + '/dashboard/'; setIcon(a, 'gauge-high'); // tachometer icon } else if (label === 'search courses') { a.href = location.origin + '/certification-catalog/'; setLabel(a, 'Certification Catalog'); setIcon(a, 'layer-group'); } else if (label === 'my account') { setIcon(a, 'user-circle'); } else if (label === 'log out' || label === 'logout') { setIcon(a, 'right-from-bracket'); } else { // Default icon for any other leftover setIcon(a, 'circle-dot'); } }); }); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <!-- Coded by Gemini --> <script> document.addEventListener('DOMContentLoaded', function() { // --- SCRIPT CONFIGURATION --- // The full URL of the page where the script should run. const targetPageURL = 'https://pharmacystandards.org/dashboard/?tab=enrolled-courses'; // The new text for the button. const newButtonText = 'Get Started'; // --- END OF CONFIGURATION --- // Check if the current page URL matches the target URL. if (window.location.href === targetPageURL) { // --- ACTION 1: Change Button Text --- // Select all elements with the class 'start-course'. const startButtons = document.querySelectorAll('.ld-dashboard-enrolled-course-status.start-course'); // Loop through each found button and update its text. startButtons.forEach(function(button) { // Check if the button's current text is "Start Course" before changing it. if (button.textContent.trim() === 'Start Course') { button.textContent = newButtonText; } }); // --- ACTION 2: Hide Author Information --- // Select all author content elements to hide them. const authorElements = document.querySelectorAll('.ld-dashboard-enrolled-course-author-content-user'); // Loop through each found element and hide it by setting its display style to 'none'. authorElements.forEach(function(element) { element.style.display = 'none'; }); } }); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script> jQuery(document).ready(function($) { var textToHideA = " Format A"; var textToHideB = " Format B"; // Select the main content area to avoid running on the whole document // You can make this more specific, e.g., $('#main-content') $('body').find('*').contents().each(function() { // Check if it's a text node and contains the text to hide if (this.nodeType === 3) { var text = this.nodeValue; // Replace the specific terms if found if (text.includes(textToHideA) || text.includes(textToHideB)) { this.nodeValue = text.replace(new RegExp(textToHideA, 'g'), '').replace(new RegExp(textToHideB, 'g'), ''); } } }); }); </script><!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script> (function () {   // Escape HTML safely   function esc(s){return String(s).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}   // Format each answer message   function formatAnswerMessage(container){     if(!container || container.querySelector(".cps-explainer")) return;     const src = container.querySelector("p") || container;     let raw = (src.textContent || "").replace(/\u00A0/g," ").replace(/[ \t]+/g," ").trim();     if(!raw) return;     const blocks = [];     const headRe = /^Correct\s*Answer\s*\(([A-E])\)\s*:\s*/i;     const headMatch = headRe.exec(raw);     let rest = raw;     if (headMatch) {       const letter = headMatch[1].toUpperCase();       const headLen = headMatch[0].length;       const inBody = raw.slice(headLen);       const labelRe = /(^|[^\w])([A-E])\s*[:\.\)]\s/;       const next = labelRe.exec(inBody);       let caBody, after;       if (next) { caBody = inBody.slice(0, next.index).trim(); after = inBody.slice(next.index).trim(); }       else { caBody = inBody.trim(); after = ""; }       blocks.push({ type:"correct", letter, text: caBody, fullLabel: `Correct Answer (${letter})` });       rest = after;     }     rest = rest.replace(/(^|[^\w])([A-E])\s*[:\.\)]\s*/g, (_,pre,L)=> pre+"\n"+L.toUpperCase()+": ").trim();     const partRe = /(?:^|\n)([A-E])\s*:\s*([\s\S]*?)(?=(?:\n[A-E]\s*:|$))/g;     let m;     while((m=partRe.exec(rest))!==null){       const letter = m[1].toUpperCase();       const body = (m[2]||"").trim();       if(body) blocks.push({ type:"choice", label:letter, text: body });     }     if(!blocks.length) return;     const wrapper = document.createElement("div");     wrapper.className = "cps-explainer";     blocks.forEach(b=>{       const div = document.createElement("div");       if(b.type==="correct"){         div.className = "cps-card cps-correct";         div.innerHTML = `<span class="cps-header">${esc(b.fullLabel)}</span><span class="cps-body">${esc(b.text)}</span>`;       } else {         div.className = "cps-card cps-choice";         div.innerHTML = `<span class="cps-letter">${esc(b.label)}:</span> <span class="cps-body">${esc(b.text)}</span>`;       }       wrapper.appendChild(div);     });     container.innerHTML = "";     container.appendChild(wrapper);   }   function run(){ document.querySelectorAll(".wpProQuiz_AnswerMessage").forEach(formatAnswerMessage); }   function injectStyle(){     if(document.getElementById("cps-explainer-style")) return;     const css=document.createElement("style");     css.id="cps-explainer-style";     css.textContent=` .wpProQuiz_AnswerMessage { background: none !important; border: none !important; padding: 0 !important; text-align: left !important; list-style-type: none !important; } .wpProQuiz_AnswerMessage::before, .wpProQuiz_AnswerMessage::after, .wpProQuiz_AnswerMessage *::before, .wpProQuiz_AnswerMessage *::after { display: none !important; content: "" !important; } .cps-explainer { border: none; background: none; padding: 0; margin-top: 15px; font-family: -apple-system, "Inter", sans-serif; } .cps-card { background-color: #fff; border-radius: 8px; padding: 16px; margin-bottom: 12px; line-height: 1.6; border: 1px solid #e9ecef; border-left-width: 5px; transition: box-shadow 0.2s ease, transform 0.2s ease; } .cps-card:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.08); } .cps-correct { border-left-color: #198754; } .cps-correct .cps-header { display: block; font-weight: 700; font-size: 1.1em; color: #198754; margin-bottom: 5px; } .cps-correct .cps-body { color: #343a40; } .cps-choice { border-left-color: #adb5bd; } .cps-choice .cps-letter { font-weight: 900!important; color: #555; margin-right: 8px; } .cps-choice .cps-body { color: #495057; font-weight: 400!important; }     `;     document.head.appendChild(css);   }   const obs=new MutationObserver(run);   document.addEventListener("DOMContentLoaded",()=>{injectStyle();run();obs.observe(document.body,{childList:true,subtree:true});});   window.addEventListener("load",run); })(); </script><!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script> document.addEventListener('DOMContentLoaded', function() { // --- CONFIGURATION --- // The exact text of the steps in your course list. const reviewStepText = 'Application Under Review'; const examStepText = 'Final Certification Exam'; // ------------------- // Find all the lesson items on the page using the theme's class. const allLessonItems = document.querySelectorAll('.ld-accordion__item--lesson'); let reviewStepElement = null; let examStepElement = null; // Loop through all items to find our specific steps by their title. allLessonItems.forEach(item => { const titleElement = item.querySelector('.ld-accordion__item-title--lesson'); if (titleElement) { const titleText = titleElement.textContent.trim(); if (titleText === reviewStepText) { reviewStepElement = item; } if (titleText.startsWith(examStepText)) { examStepElement = item; } } }); // If we found both the review step and the exam step, proceed with the logic. if (reviewStepElement && examStepElement) { // Check for the "Complete" status indicator element within the review step. const reviewCompleteIndicator = reviewStepElement.querySelector('.ld-accordion__item-attribute--progress'); // If the review step is NOT complete (the indicator element doesn't exist), then we lock the exam. if (!reviewCompleteIndicator) { const examHeader = examStepElement.querySelector('.ld-accordion__item-header--lesson'); const examLink = examStepElement.querySelector('a.ld-accordion__item-title--lesson'); const expandButton = examStepElement.querySelector('.ld-accordion__expand-button'); if (examHeader) { // 1. Make the entire header row unclickable. examHeader.style.pointerEvents = 'none'; examHeader.style.cursor = 'default'; } if (expandButton) { // 2. Hide the expand/collapse button. expandButton.style.display = 'none'; } if (examLink) { // 3. Make the title look like plain, non-link text. examLink.style.color = '#333333'; examLink.style.textDecoration = 'none'; } } else { // --- NEW --- // If the review step IS complete, add an emphasis style to the exam row. const examHeader = examStepElement.querySelector('.ld-accordion__item-header--lesson'); if (examHeader) { // Add a class to the header to apply the animation. examHeader.classList.add('newly-unlocked-emphasis'); // Inject the CSS for the glowing animation into the page. const styles = ` @keyframes glowing-border { 0% { box-shadow: 0 0 -5px #0073aa; } 40% { box-shadow: 0 0 20px #0073aa; } 60% { box-shadow: 0 0 20px #0073aa; } 100% { box-shadow: 0 0 -5px #0073aa; } } .newly-unlocked-emphasis { animation: glowing-border 2.5s ease-in-out infinite; border-radius: 5px; border: 1px solid transparent; } `; const styleSheet = document.createElement("style"); styleSheet.type = "text/css"; styleSheet.innerText = styles; document.head.appendChild(styleSheet); } } } }); </script><!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script> jQuery(document).ready(function($) { // Wait for Gravity Form #1 to be displayed on the page. $(document).on('gform_post_render', function(event, form_id, current_page) { // Only apply this logic to form with ID 1. if (form_id == 1) { // Listen for the 'submit' event on the form. $('form#gform_1').on('submit', function(e) { // 1. Hide the original submit button. $('#gform_submit_button_1').hide(); // 2. Show your custom spinner container. $('#custom-spinner').show(); }); } }); }); </script><!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script> const observer = new MutationObserver(() => { document.querySelectorAll(".wpProQuiz_AnswerMessage p").forEach((p) => { if (p.dataset.formatted) return; const children = Array.from(p.childNodes); children.forEach((node, index) => { if (node.nodeType === 1 && node.tagName === "IMG" && node.classList.contains("emoji")) { // Add line breaks before emoji after first one if (index > 0) { const br1 = document.createElement("br"); const br2 = document.createElement("br"); p.insertBefore(br1, node); p.insertBefore(br2, node); } // Check if text node follows emoji and starts with A:/B:/etc const next = node.nextSibling; if (next && next.nodeType === 3) { const match = next.textContent.match(/^(\s*)([A-E]:)/); if (match) { const space = match[1]; const letter = match[2]; const remainder = next.textContent.slice(match[0].length); const frag = document.createDocumentFragment(); frag.appendChild(document.createTextNode(space)); const strong = document.createElement("strong"); strong.textContent = letter; frag.appendChild(strong); frag.appendChild(document.createTextNode(remainder)); p.replaceChild(frag, next); } } } }); // Format Citation line const citationRegex = /Citation:/i; if (citationRegex.test(p.innerHTML)) { p.innerHTML = p.innerHTML.replace( citationRegex, '<br><br><strong>Citation:</strong>' ); } p.dataset.formatted = "true"; }); }); observer.observe(document.body, { childList: true, subtree: true }); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script> document.addEventListener("DOMContentLoaded", function () { const cards = document.querySelectorAll(".ld-mycourse-wrap"); cards.forEach(function (card) { const link = card.querySelector("h3 > a"); if (!link) return; const href = link.getAttribute("href"); // Avoid duplicate overlays if (card.querySelector(".card-link-overlay")) return; const overlay = document.createElement("a"); overlay.href = href; overlay.className = "card-link-overlay"; overlay.style.position = "absolute"; overlay.style.top = "0"; overlay.style.left = "0"; overlay.style.width = "100%"; overlay.style.height = "100%"; overlay.style.zIndex = "9"; overlay.style.textIndent = "-9999px"; // Only add if not already wrapped card.style.position = "relative"; card.prepend(overlay); }); }); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script> document.addEventListener('DOMContentLoaded', function () { const checkboxes = Array.from(document.querySelectorAll('.wpProQuiz_questionList input[type="checkbox"]')); const radios = document.querySelectorAll('.matrix-grid input[type="radio"]'); radios.forEach(radio => { radio.addEventListener('change', function () { const labelToMatch = radio.dataset.label?.trim(); if (!labelToMatch) return; // Clear all checkboxes that share the same row label prefix const rowPrefix = labelToMatch.split('–')[0].trim(); checkboxes.forEach(cb => { const labelText = cb.closest('label')?.textContent.trim(); if (labelText && labelText.startsWith(rowPrefix + ' –')) { cb.checked = false; } }); // Activate the correct matching label checkboxes.forEach(cb => { const labelText = cb.closest('label')?.textContent.trim(); if (labelText === labelToMatch) { cb.checked = true; } }); }); }); // Optional: hide the checkbox list // const answerSection = document.querySelector('.wpProQuiz_questionList'); // if (answerSection) answerSection.style.display = 'none'; }); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script> document.addEventListener('DOMContentLoaded', function () { const spans = document.querySelectorAll('.highlightable'); const checkboxes = document.querySelectorAll('.wpProQuiz_questionList input[type="checkbox"]'); spans.forEach(span => { span.addEventListener('click', function () { const index = parseInt(span.getAttribute('data-index')); if (checkboxes[index]) { checkboxes[index].click(); // Sync with checkbox span.classList.toggle('highlighted'); } }); }); // Sync highlights with any pre-selected options checkboxes.forEach((cb, i) => { if (cb.checked && spans[i]) { spans[i].classList.add('highlighted'); } }); }); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script> jQuery(document).on('pumAfterClose', '#pum-7514', function () { var gwrf = window.gwrf_1; if (typeof gwrf !== 'undefined') { gwrf.reloadForm(); } }); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script type="text/javascript"> function widenQuizLayout() { const quizBox = document.querySelector('.wpProQuiz_quiz'); const questionBox = document.querySelectorAll('.wpProQuiz_listItem'); if (quizBox) { quizBox.style.maxWidth = '1100px'; quizBox.style.margin = '0 auto'; quizBox.style.display = 'flex'; quizBox.style.justifyContent = 'center'; } questionBox.forEach(el => { el.style.width = '100%'; el.style.maxWidth = '900px'; el.style.margin = '0 auto'; el.style.padding = '0 15px'; }); } // Initial run widenQuizLayout(); // Also run after AJAX navigation using mutation observer const observer = new MutationObserver(widenQuizLayout); observer.observe(document.body, { childList: true, subtree: true }); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script type="text/javascript"> document.addEventListener("DOMContentLoaded", function () { const currentURL = window.location.href; const postID = document.body.classList.contains('postid-1132108'); if (currentURL.includes("federal-mpje-120-question-practice-exam") || postID) { const style = document.createElement("style"); style.innerHTML = ` a.quiz-nav-toggle, a.popmake-1063754.pum-trigger, a.popmake-7514.pum-trigger { display: none !important; } .lqc-plugin .learndash .wpProQuiz_content .wpProQuiz_questionListItem span { display: none !important; } `; document.head.appendChild(style); } }); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script> // Inject combined CSS into the page (with white text for current step) const style = document.createElement("style"); style.innerHTML = ` .rg-woo-breadcrumbs-wrapper .rg-woo-breadcrumbs a { position: relative !important; padding: 0.5rem 1.4rem 0.5rem 1.15rem !important; font-size: 1.1rem !important; font-weight: 500 !important; color: #9ca3af !important; text-decoration: none !important; display: inline-flex !important; align-items: center !important; border-radius: 1rem !important; background-color: white !important; box-shadow: 0 2px 6px rgba(0,0,0,0.05) !important; } .rg-woo-breadcrumbs-wrapper .rg-woo-breadcrumbs a.current { color: #ffffff !important; background-color: #2563eb !important; box-shadow: 0 4px 12px rgba(37, 99, 235, 0.25) !important; } .rg-woo-breadcrumbs-wrapper .rg-woo-breadcrumbs .step-number { position: static !important; width: 1.8rem !important; height: 1.8rem !important; font-size: 0.85rem !important; font-weight: 600 !important; text-align: center !important; line-height: 1.8rem !important; border-radius: 999px !important; background-color: #d1d5db !important; color: #111827 !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; margin-right: 0.5rem !important; margin-left: 0rem !important; } .rg-woo-breadcrumbs-wrapper .rg-woo-breadcrumbs a.current .step-number { background-color: #1d4ed8 !important; color: white !important; } .checkout-breadcrumbs { display: flex !important; justify-content: center !important; align-items: center !important; gap: 1rem !important; padding: 2rem 1rem !important; background: #f9fafb !important; border-radius: 1rem !important; font-size: 1.1rem !important; font-weight: 500 !important; text-align: center !important; position: relative !important; } .checkout-breadcrumbs a { display: flex !important; align-items: center !important; gap: 0.5rem !important; color: #6b7280 !important; text-decoration: none !important; position: relative !important; padding: 0.5rem 1rem !important; border-radius: 0.75rem !important; background: white !important; box-shadow: 0 2px 6px rgba(0,0,0,0.05) !important; transition: all 0.3s ease !important; } .checkout-breadcrumbs a.current, .checkout-breadcrumbs a:hover { background: #2563eb !important; color: white !important; box-shadow: 0 4px 12px rgba(37, 99, 235, 0.25) !important; } .checkout-breadcrumbs .divider { font-size: 1.5rem !important; color: #9ca3af !important; transform: translateY(2px) !important; } @media (max-width: 768px) { .checkout-breadcrumbs .divider { display: none !important; } } `; document.head.appendChild(style); // Inject step numbers (only once) document.addEventListener('DOMContentLoaded', function () { const steps = document.querySelectorAll('.rg-woo-breadcrumbs a'); steps.forEach((el, index) => { if (!el.querySelector('.step-number')) { const span = document.createElement('span'); span.className = 'step-number'; span.textContent = index + 1; el.prepend(span); } }); }); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script> document.addEventListener("DOMContentLoaded", function() { document.querySelectorAll("img").forEach(img => { img.oncontextmenu = () => false; img.ondragstart = () => false; }); document.addEventListener('contextmenu', event => { if (event.target.tagName === 'IMG') { event.preventDefault(); } }); }); </script> <!-- end Simple Custom CSS and JS --> <!-- start Simple Custom CSS and JS --> <script type="text/javascript"> const interval = setInterval(() => { const selects = document.querySelectorAll('#ld_course_categorydropdown_select'); selects.forEach(select => { const firstOption = select.querySelector('option[value=""]'); if (firstOption && firstOption.textContent.trim() === 'All Categories') { firstOption.textContent = 'All Jurisdictions'; } }); }, 300); // Stop polling after 5 seconds setTimeout(() => clearInterval(interval), 5000); </script> <!-- end Simple Custom CSS and JS --> <script id="cps-course-script"> document.addEventListener('DOMContentLoaded', function(){ /* Accordion */ document.querySelectorAll('.cps-scope .cps-module__header').forEach(h=>{ h.addEventListener('click', function(){ const mod = this.closest('.cps-module'); const wasOpen = mod.classList.contains('is-open'); document.querySelectorAll('.cps-scope .cps-module').forEach(m=>m.classList.remove('is-open')); if(!wasOpen) mod.classList.add('is-open'); const scroller = document.querySelector('.cps-scope .cps-outline-scroll') || document.querySelector('.cps-scope .cps-sidebar'); if (scroller && mod) mod.scrollIntoView({ block: 'nearest', behavior: 'smooth' }); }); }); /* Helpers */ function safeJson(res){ return res.text().then(t=>{ try { return JSON.parse(t); } catch(e){ return {success:false, data:{message:'Bad response', raw:t}}; } }); } function setBusy(el, busy){ if(!el) return; if(busy){ el.setAttribute('aria-busy','true'); el.dataset.loading='1'; el.style.pointerEvents='none'; el.style.opacity='0.7'; } else { el.removeAttribute('aria-busy'); el.dataset.loading=''; el.style.pointerEvents=''; el.style.opacity=''; } } function updateProgressUI(percent, done, total){ const fill = document.querySelector('.cps-scope .cps-progress__fill'); const pctLabel = document.querySelector('.cps-scope [data-cps-percent]'); const doneEl = document.querySelector('.cps-scope [data-cps-count-done]'); const totalEl = document.querySelector('.cps-scope [data-cps-count-total]'); if (fill) fill.style.width = (percent ?? 0) + '%'; if (pctLabel) pctLabel.textContent = (percent ?? 0) + '% complete'; if (doneEl) doneEl.textContent = String(done ?? 0); if (totalEl) totalEl.textContent = String(total ?? (totalEl.getAttribute('data-total')||'0')); } function markRowUI(isComplete, completedAt){ const activeRow = document.querySelector('.cps-scope .cps-section__link.is-active'); if (!activeRow) return; const b = activeRow.querySelector('.cps-badge'); if (b){ b.classList.toggle('cps-badge--done', !!isComplete); b.textContent = isComplete ? '✓' : ''; } const sub = activeRow.querySelector('.cps-sub'); if (sub){ sub.textContent = isComplete && completedAt ? ('Completed on: '+ new Date(completedAt.replace(' ','T')).toLocaleDateString()) : ''; } } /* Event delegation for Complete/Incomplete */ document.addEventListener('click', async function(e){ const completeBtn = e.target.closest('[data-cps-mark-complete]'); const undoBtn = e.target.closest('[data-cps-mark-incomplete]'); if (!completeBtn && !undoBtn) return; e.preventDefault(); const btn = completeBtn || undoBtn; if (btn.dataset.loading === '1') return; const action = completeBtn ? 'cps_mark_complete' : 'cps_mark_incomplete'; const fd = new FormData(); fd.append('action', action); fd.append('nonce', '42a6fd1419'); fd.append('post_id', '1378836'); setBusy(btn, true); try{ const res = await fetch('https://pharmacystandards.org/wp-admin/admin-ajax.php', { method:'POST', body: fd, credentials:'same-origin' }); const data = await safeJson(res); if(!data.success){ alert((data && data.data && data.data.message) ? data.data.message : 'Unable to process request.'); return; } const percent = data.data.percent ?? 0; const done = data.data.done ?? null; const total = data.data.total ?? null; if (completeBtn){ markRowUI(true, data.data.completed_at || null); updateProgressUI(percent, done, total); const mainBtn = document.querySelector('[data-cps-mark-complete]'); const undo = document.querySelector('[data-cps-mark-incomplete]'); if (mainBtn){ mainBtn.classList.add('cps-btn--primary'); mainBtn.innerHTML = '<span class="cps-pulse" aria-hidden="true"></span> Completed'; } if (undo){ undo.removeAttribute('disabled'); undo.classList.remove('cps-btn--ghost'); } } else { markRowUI(false, null); updateProgressUI(percent, done, total); const mainBtn = document.querySelector('[data-cps-mark-complete]'); const undo = document.querySelector('[data-cps-mark-incomplete]'); if (mainBtn){ mainBtn.classList.remove('cps-btn--primary'); mainBtn.textContent = 'Mark Complete'; } if (undo){ undo.setAttribute('disabled','disabled'); undo.classList.add('cps-btn--ghost'); } } } catch(err){ console.error(err); alert('Network error.'); } finally { setBusy(btn, false); } }, {passive:false}); /* Sticky sidebar (theme-proof) */ (function(){ const sidebar = document.querySelector('.cps-scope .cps-sidebar'); if (!sidebar) return; const adminBar = document.querySelector('#wpadminbar'); const headerCandidates = ['#masthead','.site-header','header[role="banner"]','header#header','header','.header','.global-header']; const placeholder = document.createElement('div'); let startFixY = 0, startRect = null; function isFixedOrSticky(el){ const cs = window.getComputedStyle(el); return cs.position === 'fixed' || cs.position === 'sticky'; } function headerOffset(){ let off = 0; if (adminBar && isFixedOrSticky(adminBar)) off += adminBar.offsetHeight || 32; for (const sel of headerCandidates){ const h = document.querySelector(sel); if (!h) continue; const rect = h.getBoundingClientRect(); if (isFixedOrSticky(h) || rect.top <= 0) { off += rect.height; break; } } return off || 90; } function setFixedStyles(){ const rect = startRect || sidebar.getBoundingClientRect(); const left = rect.left + window.scrollX; const width = rect.width; const topOff = headerOffset(); sidebar.style.position = 'fixed'; sidebar.style.top = topOff+'px'; sidebar.style.left = left+'px'; sidebar.style.width = width+'px'; sidebar.style.maxHeight = `calc(100vh - ${topOff}px - 16px)`; sidebar.style.transform = 'translateY(0)'; } function clearFixedStyles(){ sidebar.style.position=''; sidebar.style.top=''; sidebar.style.left=''; sidebar.style.width=''; sidebar.style.maxHeight=''; sidebar.style.transform=''; } function ensurePlaceholder(){ if (!placeholder.parentNode){ placeholder.style.width = sidebar.offsetWidth+'px'; placeholder.style.height = sidebar.offsetHeight+'px'; sidebar.parentNode.insertBefore(placeholder, sidebar); } else { placeholder.style.height = sidebar.offsetHeight+'px'; } } function removePlaceholder(){ if (placeholder.parentNode) placeholder.parentNode.removeChild(placeholder); } function computeStartY(){ const rect = sidebar.getBoundingClientRect(); startRect = rect; startFixY = window.scrollY + rect.top - headerOffset(); } function onScroll(){ const y = window.scrollY; if (y >= startFixY){ ensurePlaceholder(); setFixedStyles(); const footerEl = document.querySelector('footer, #site-footer, .site-footer'); if (footerEl){ const viewportH = window.innerHeight || document.documentElement.clientHeight; const ft = footerEl.getBoundingClientRect().top; const overlap = Math.max(0, viewportH - ft); const bump = overlap > 0 ? -(overlap + 12) : 0; sidebar.style.transform = `translateY(${bump}px)`; } } else { clearFixedStyles(); removePlaceholder(); } } function onResize(){ clearFixedStyles(); removePlaceholder(); computeStartY(); onScroll(); } computeStartY(); onScroll(); window.addEventListener('scroll', onScroll, { passive:true }); window.addEventListener('resize', onResize); setTimeout(onResize, 400); setTimeout(onResize, 1200); })(); // Auto-scroll so the active item is visible inside the inner scroller (function autoScrollToActive(){ const scroller = document.querySelector('.cps-scope .cps-outline-scroll'); if (!scroller) return; const target = scroller.querySelector('.cps-section__link.is-active') || scroller.querySelector('.cps-module.is-open') || scroller.querySelector('.cps-module'); if (!target) return; function scrollOnce() { const sbRect = scroller.getBoundingClientRect(); const tgRect = target.getBoundingClientRect(); const delta = tgRect.top - sbRect.top; scroller.scrollTop += (delta - 60); } scrollOnce(); setTimeout(scrollOnce, 250); setTimeout(scrollOnce, 900); setTimeout(scrollOnce, 1600); })(); /* === Auto-complete when clicking NEXT (new) === */ document.addEventListener('click', function(e){ const link = e.target.closest('a.cps-card--next[data-cps-next]'); if (!link) return; // Only try to complete if this page isn't already done const alreadyDone = link.getAttribute('data-cps-current-done') === '1'; if (alreadyDone) return; // allow normal navigation e.preventDefault(); // pause navigation briefly const postId = link.getAttribute('data-cps-current-id'); // Prepare payload const params = new URLSearchParams(); params.set('action', 'cps_mark_complete'); params.set('nonce', '42a6fd1419'); params.set('post_id', postId || ''); // Prefer sendBeacon (fires during unload), else fetch(keepalive) let completedKickoff = false; try { const blob = new Blob([params.toString()], { type: 'application/x-www-form-urlencoded;charset=UTF-8' }); if (navigator.sendBeacon && blob.size < 64 * 1024) { navigator.sendBeacon('https://pharmacystandards.org/wp-admin/admin-ajax.php', blob); completedKickoff = true; } } catch(_) {} if (!completedKickoff) { // Fire and forget; don't wait try { fetch('https://pharmacystandards.org/wp-admin/admin-ajax.php', { method: 'POST', body: params, headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' }, credentials: 'same-origin', keepalive: true }); } catch(_) {} } // Small delay helps on very fast navigations setTimeout(() => { window.location.href = link.href; }, 50); }, {capture: true}); }); </script> <script type="text/javascript"></script><script type="text/javascript"> /* <![CDATA[ */ gform.initializeOnLoaded( function() { jQuery(document).on('gform_post_render', function(event, formId, currentPage){if(formId == 2) {if(typeof Placeholders != 'undefined'){ Placeholders.enable(); }jQuery('#input_2_5').mask('(999) 999-9999').bind('keypress', function(e){if(e.which == 13){jQuery(this).blur();} } );} } );jQuery(document).on('gform_post_conditional_logic', function(event, formId, fields, isInit){} ) } ); /* ]]> */ </script> <script type="text/javascript"> /* <![CDATA[ */ gform.initializeOnLoaded( function() {jQuery(document).trigger("gform_pre_post_render", [{ formId: "2", currentPage: "1", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_2" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_2"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_2" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 2, 1 ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } ); /* ]]> */ </script> <!-- Cookie Notice plugin v2.5.7 by Hu-manity.co https://hu-manity.co/ --> <div data-rocket-location-hash="93d3ced0204972a2b4cdfc5b95f0a36d" id="cookie-notice" role="dialog" class="cookie-notice-hidden cookie-revoke-hidden cn-position-bottom" aria-label="Cookie Notice" style="background-color: rgba(50,50,58,1);"><div data-rocket-location-hash="9ae7b3cafb3d6b6f154cacdca67cbf58" class="cookie-notice-container" style="color: #fff"><span id="cn-notice-text" class="cn-text-container">We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.</span><span id="cn-notice-buttons" class="cn-buttons-container"><button id="cn-accept-cookie" data-cookie-set="accept" class="cn-set-cookie cn-button" aria-label="Ok" style="background-color: #00a99d">Ok</button></span><span id="cn-close-notice" data-cookie-set="accept" class="cn-close-icon" title="No"></span></div> </div> <!-- / Cookie Notice plugin --><script> window.addEventListener('load', () => { const loader = document.querySelector('.rg-page-loader'); if (loader) { loader.classList.add('fade-out'); setTimeout(() => loader.remove(), 500); } }); </script> <style> <script>var rocket_beacon_data = {"ajax_url":"https:\/\/pharmacystandards.org\/wp-admin\/admin-ajax.php","nonce":"5fbee52a19","url":"https:\/\/pharmacystandards.org\/casp\/section-34-4-digital-marketing-seo-and-outcome-storytelling","is_mobile":false,"width_threshold":1600,"height_threshold":700,"delay":500,"debug":null,"status":{"atf":true,"lrc":true,"preconnect_external_domain":true},"elements":"img, video, picture, p, main, div, li, svg, section, header, span","lrc_threshold":1800,"preconnect_external_domain_elements":["link","script","iframe"],"preconnect_external_domain_exclusions":["static.cloudflareinsights.com","rel=\"profile\"","rel=\"preconnect\"","rel=\"dns-prefetch\"","rel=\"icon\""]}</script><script data-name="wpr-wpr-beacon" src='https://pharmacystandards.org/wp-content/plugins/wp-rocket/assets/js/wpr-beacon.min.js' async></script><script type="text/javascript" id="perfmatters-delayed-styles-js">!function(){const e=["keydown","mousemove","wheel","touchmove","touchstart","touchend"];function t(){document.querySelectorAll("link[data-pmdelayedstyle]").forEach(function(e){e.setAttribute("href",e.getAttribute("data-pmdelayedstyle"))}),e.forEach(function(e){window.removeEventListener(e,t,{passive:!0})})}e.forEach(function(e){window.addEventListener(e,t,{passive:!0})})}();</script></body> </html> <!-- This website is like a Rocket, isn't it? Performance optimized by WP Rocket. Learn more: https://wp-rocket.me -->