{"id":13464,"date":"2025-08-01T01:27:32","date_gmt":"2025-08-01T08:27:32","guid":{"rendered":"https:\/\/cprcart.com\/?page_id=13464"},"modified":"2025-08-01T01:27:32","modified_gmt":"2025-08-01T08:27:32","slug":"downtown-portland","status":"publish","type":"page","link":"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/downtown-portland\/","title":{"rendered":"Downtown Portland"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"13464\" class=\"elementor elementor-13464\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-61c469b9 elementor-section-full_width elementor-section-height-min-height elementor-section-stretched elementor-section-height-default elementor-section-items-middle\" data-id=\"61c469b9\" data-element_type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1b2795c\" data-id=\"1b2795c\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-0c9d16d elementor-section-height-min-height elementor-section-boxed elementor-section-height-default\" data-id=\"0c9d16d\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-c5567ba banner_content\" data-id=\"c5567ba\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-57eb03b banner_title elementor-widget elementor-widget-heading\" data-id=\"57eb03b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">CPR CART<br>Downtown Portland<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-58e137a banner_text elementor-widget elementor-widget-heading\" data-id=\"58e137a\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span>Visit our CPR Cart location in Downtown Portland and get your BLS, ACLS, PALS certification or renewal done fast. It Just takes 2 steps to instantly receive your AHA eCard &amp; CEU's.<\/span><br><br><b>Part 1: Online Self-Paced Training<\/b><br><b>Part 2: In-Person Skills with CPR Cart (RQI)<\/b><\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-25db466\" data-id=\"25db466\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-59348f4c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"59348f4c\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3724deb1\" data-id=\"3724deb1\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-91bf83a elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-invisible\" data-id=\"91bf83a\" data-element_type=\"section\" data-settings=\"{&quot;animation&quot;:&quot;slideInUp&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-3e81433d\" data-id=\"3e81433d\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-73cdd646 elementor-widget elementor-widget-heading\" data-id=\"73cdd646\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">BLS, ACLS, PALS Training &amp; Certification Downtown Portland<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4c18005a elementor-widget elementor-widget-heading\" data-id=\"4c18005a\" data-element_type=\"widget\" id=\"book-now\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<p class=\"elementor-heading-title elementor-size-default\"><span>CPR Cart offers all AHA course types in Downtown Portland, courses are self paced and automated. Helping solve the demand for American Heart Association PALS, BLS, ACLS classes, through a self-service model.<\/span><\/p>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-8b34396 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-invisible\" data-id=\"8b34396\" data-element_type=\"section\" data-settings=\"{&quot;animation&quot;:&quot;slideInUp&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-d7896b1\" data-id=\"d7896b1\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1de1655 elementor-widget elementor-widget-shortcode\" data-id=\"1de1655\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-shortcode\">\r\n\r\n\r\n<style>\r\n     .spinner {\r\n    width: 30px;\r\n    height: 30px;\r\n    border: 4px solid #ccc;\r\n    border-top-color: #007bff;\r\n    margin-bottom: 10px;\r\n    border-radius: 50%;\r\n    animation: spin 0.8s linear infinite;\r\n}\r\n@keyframes spin {\r\n    to { transform: rotate(360deg); }\r\n}\r\n\/* Styling for the course type button *\/\r\n.course-type-btn {\r\n    background: linear-gradient(135deg, #ffffff 0%, #d1d1d1 100%) !important;\r\n    border: 1px solid #626367;\r\n    border-radius: 8px;\r\n    padding: 15px;\r\n    text-align: center;\r\n    transition: all 0.3s ease;\r\n    cursor: pointer;\r\n    position: relative;\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    justify-content: space-between;\r\n    \/* min-height: 200px; Ensure enough space for content *\/\r\n    \/* color: #fff; White text for better contrast on gradient *\/\r\n}\r\n\r\n\/* Hover effect for course type button *\/\r\n.course-type-btn:hover {\r\n    background: linear-gradient(135deg, #b3b3b3 0%, #d6d6d6 100%) !important;\r\n    transform: scale(1.05);\r\n    box-shadow: 0 4px 15px rgba(98, 99, 103, 0.4);\r\n}\r\n\r\n\/* Ensure text inside button changes color on hover *\/\r\n.course-type-btn:hover .button_text,\r\n.course-type-btn:hover .button_text strong,\r\n.course-type-btn:hover .button_text br {\r\n    color: #000; \/* Change text color on hover *\/\r\n}\r\n<\/style>\r\n<script>\r\n    $(document).ready(function() {\r\n        $('#time-buttons').hide();\r\n        var timeInterval = 1; \/\/ Set time slot interval to 1 hour\r\n        var minTimeOffset = 120; \/\/ 2 hours offset for slot availability\r\n\r\n        var bookedSlots = [];\n        var dailySlots = [];\n        var disabledDates = [];\r\n        \/\/ console.log(\"disabledDateRange\", disabledDateRange);\r\n        \/\/ var dailySlots = {\r\n        \/\/     'Monday': {\r\n        \/\/         start: '00:00 AM',\r\n        \/\/         end: '00:00 PM'\r\n        \/\/     },\r\n        \/\/     'Tuesday': {\r\n        \/\/         start: '04:59 AM',\r\n        \/\/         end: '04:49 PM'\r\n        \/\/     },\r\n        \/\/     'Wednesday': {\r\n        \/\/         start: '09:00 AM',\r\n        \/\/         end: '04:00 PM'\r\n        \/\/     },\r\n        \/\/     'Thursday': {\r\n        \/\/         start: '08:00 AM',\r\n        \/\/         end: '03:00 PM'\r\n        \/\/     },\r\n        \/\/     'Friday': {\r\n        \/\/         start: '09:00 AM',\r\n        \/\/         end: '03:00 PM'\r\n        \/\/     },\r\n        \/\/     'Saturday': {\r\n        \/\/         start: '08:30 AM',\r\n        \/\/         end: '11:35 PM'\r\n        \/\/     },\r\n        \/\/     'Sunday': {\r\n        \/\/         start: '11:30 AM',\r\n        \/\/         end: '10:36 PM'\r\n        \/\/     }\r\n        \/\/ };\r\n        function formatTime(timeStr) {\r\n            var [time, period] = timeStr.split(' ');\r\n            var [hours, minutes] = time.split(':');\r\n\r\n            \/\/ Always pad hours with two digits\r\n            hours = hours.padStart(2, '0');\r\n\r\n            return hours + ':' + minutes + ' ' + period; \/\/ Return the time in 01:00 PM format for all\r\n        }\r\n\r\n\r\n        function timeToMinutes(timeStr) {\r\n            var [time, period] = timeStr.split(' ');\r\n            var [hours, minutes] = time.split(':').map(Number);\r\n            if (period === 'PM' && hours < 12) hours += 12;\r\n            if (period === 'AM' && hours === 12) hours = 0;\r\n            return hours * 60 + minutes;\r\n        }\r\n\r\n        function minutesToTime(minutes) {\r\n            var hours = Math.floor(minutes \/ 60);\r\n            var mins = minutes % 60;\r\n            var period = hours < 12 ? 'AM' : 'PM';\r\n            hours = hours % 12;\r\n            hours = hours ? hours : 12; \/\/ the hour '0' should be '12'\r\n            mins = mins < 10 ? '0' + mins : mins;\r\n            return hours + ':' + mins + ' ' + period;\r\n        }\r\n\r\n        function roundToNextHour(minutes) {\r\n            return Math.ceil(minutes \/ 60) * 60;\r\n        }\r\n\r\n        function isRoundTime(timeInMinutes) {\r\n            return timeInMinutes % 60 === 0;\r\n        }\r\n\r\n        function getAdjustedTimeSlots(startTime, endTime, isToday) {\r\n            var times = [];\r\n            var start = timeToMinutes(startTime);\r\n            var end = timeToMinutes(endTime) - 60; \/\/ Adjust end time to 1 hour before\r\n\r\n            if (isToday) {\r\n                var now = new Date();\r\n                var currentTimeInMinutes = now.getHours() * 60 + now.getMinutes();\r\n                var nextAvailableTime = currentTimeInMinutes + minTimeOffset;\r\n\r\n                \/\/ Use the start time if it's a round figure and the current time is before start time\r\n                if (isRoundTime(start) && currentTimeInMinutes <= start) {\r\n                    \/\/ Use the start time as it is\r\n                } else if (!isRoundTime(currentTimeInMinutes)) {\r\n                    \/\/ Apply 2-hour offset and round to the next hour\r\n                    if (nextAvailableTime > start) {\r\n                        start = roundToNextHour(nextAvailableTime);\r\n                    }\r\n                }\r\n            } else {\r\n                \/\/ For non-today dates, round up the start time if it's not already round\r\n                if (!isRoundTime(start)) {\r\n                    start = roundToNextHour(start);\r\n                }\r\n            }\r\n\r\n            \/\/ If the adjusted start time is greater than or equal to the end time, return empty times\r\n            if (start >= end) {\r\n                console.error('Start time must be before end time');\r\n                return times;\r\n            }\r\n\r\n            \/\/ Generate time slots with a 1-hour interval\r\n            for (var minutes = start; minutes <= end; minutes += timeInterval * 60) {\r\n                times.push(minutesToTime(minutes));\r\n            }\r\n\r\n            return times;\r\n        }\r\n\r\n        function updateTimeSlots(dayName, isToday) {\r\n            var timeButtons = $(\"#time-buttons\");\r\n            timeButtons.empty(); \/\/ Clear existing slots\r\n\r\n            \/\/ Get slots for the selected day\r\n            var slots = dailySlots[dayName] || {\r\n                start: '00:00 AM',\r\n                end: '11:59 PM'\r\n            };\r\n\r\n            \/\/ Get available times based on the start and end time\r\n            var times = getAdjustedTimeSlots(slots.start, slots.end, isToday);\r\n\r\n            \/\/ Check if the selected date is disabled\r\n            var selectedDate = $.datepicker.formatDate('yy-mm-dd', $(\"#datepicker\").datepicker(\"getDate\"));\r\n\r\n           \/*  if (new Date(selectedDate) <= disabledDateRange) {\r\n                \/\/ If the date is within the disabled range, show the message and no slots\r\n                timeButtons.append('<p>No time slots available. Please check available date to book slots.<\/p>');\r\n                return;\r\n            } *\/\r\n\r\n            \/\/ If there are no times available, show the 'No slots available' message\r\n            if (times.length === 0) {\r\n                timeButtons.append('<p>No slots available for today.<\/p>');\r\n                return;\r\n            }\r\n\r\n            \/\/ Otherwise, append the available time slots\r\n            $.each(times, function(index, value) {\r\n                var radioId = 'time-' + index;\r\n                var radio = $('<input>')\r\n                    .attr('type', 'radio')\r\n                    .attr('name', 'time')\r\n                    .attr('id', radioId)\r\n                    .attr('value', value)\r\n                    .addClass('time-radio');\r\n\r\n                var label = $('<label>')\r\n                    .attr('for', radioId)\r\n                    .text(value)\r\n                    .addClass('time-label');\r\n\r\n                timeButtons.append(radio).append(label);\r\n            });\r\n        }\r\n\r\n        function disableBookedSlots(date) {\r\n            var formattedDate = $.datepicker.formatDate('mm-dd-yy', date);\r\n            var times = $(\"#time-buttons\").find(\".time-label\");\r\n\r\n            times.each(function() {\r\n                var timeLabel = $(this);\r\n                var timeValue = formatTime(timeLabel.text().trim()); \/\/ Always pad hours with two digits\r\n\r\n                if (bookedSlots[formattedDate] && bookedSlots[formattedDate].includes(timeValue)) {\r\n                    var radioButton = $(\"#\" + timeLabel.attr('for'));\r\n                    radioButton.prop('disabled', true);\r\n                    timeLabel.addClass('disabled');\r\n                } else {\r\n                    var radioButton = $(\"#\" + timeLabel.attr('for'));\r\n                    radioButton.prop('disabled', false);\r\n                    timeLabel.removeClass('disabled');\r\n                }\r\n            });\r\n        }\r\n\r\n        function setCurrentDateTime() {\r\n            var now = new Date();\r\n            var formattedDate = $.datepicker.formatDate('MM dd, yy', now);\r\n            var period = now.getHours() < 12 ? 'AM' : 'PM';\r\n            var displayHour = now.getHours() % 12 === 0 ? 12 : now.getHours() % 12;\r\n            var displayMinute = now.getMinutes() < 10 ? '0' + now.getMinutes() : now.getMinutes();\r\n            var time = displayHour + ':' + displayMinute + ' ' + period;\r\n            $(\"#date_time_wrap\").text(formattedDate);\r\n        }\r\n\r\n       \/\/ Initialize Datepicker\r\n    \/\/    var disabledDates = [\"2024-12-05\", \"2025-05-01\", \"2025-05-10\"];\r\n\r\n       $(\"#datepicker\").datepicker({\r\n        minDate: 0, \/\/ Ensure the user can't pick past dates\r\n        beforeShowDay: function(date) {\r\n            var formattedDate = $.datepicker.formatDate('yy-mm-dd', date);\r\n            if (disabledDates.indexOf(formattedDate) > -1) {\r\n                return [false]; \/\/ Disable this specific date\r\n            }\r\n            return [true]; \/\/ Enable other dates\r\n        },\r\n        onSelect: function(dateText, inst) {\r\n            if (inst && inst.dpDiv) {\r\n                inst.dpDiv.find('td.ui-datepicker-current-day a, a.ui-state-focus').blur();\r\n            }\r\n            $('#time-buttons').show();\r\n            var selectedDate = $(\"#datepicker\").datepicker(\"getDate\");\r\n            var dayName = $.datepicker.formatDate('DD', selectedDate);\r\n            var isToday = new Date().toDateString() === selectedDate.toDateString();\r\n\r\n            updateTimeSlots(dayName, isToday);\r\n            disableBookedSlots(selectedDate);\r\n        }\r\n    });\r\n\r\n\r\n        \/\/ Initialize with today's date slots and time\r\n        setCurrentDateTime();\r\n        var today = $(\"#datepicker\").datepicker(\"getDate\");\r\n        var todayDayName = $.datepicker.formatDate('DD', today);\r\n        updateTimeSlots(todayDayName, true); \/\/ Pass true for the current date\r\n        disableBookedSlots(today);\r\n\r\n\r\n\r\n\r\n        \/\/ Update course date and time in input field when time is selected\r\n        $(document).on('change', '.time-radio', function() {\r\n            var selectedDate = $(\"#datepicker\").datepicker(\"getDate\");\r\n            var selectedTime = $(\".time-radio:checked\").val();\r\n\r\n            if (selectedDate && selectedTime) {\r\n                var show_date_format = $.datepicker.formatDate('MM dd, yy', selectedDate) + \" \" + selectedTime;\r\n                var courseDateTime = $.datepicker.formatDate('yy-mm-dd', selectedDate) + \" \" + selectedTime;\r\n                $(\"#coursedate\").val(courseDateTime);\r\n                $(\"#date_time_wrap\").html(show_date_format);\r\n            }\r\n        });\r\n        \/\/ Function to handle form submission based on course type\r\n        window.handleSubmitButton = function handleSubmitButton() {\r\n            \/\/ Output PHP array as JSON\r\n            var courseAvailability = null;\r\n            var selectedCourseType = $('#select_course_type').val() || '';\r\n            var selectedfeaturedinmage = $('#select_course_type_image').val() || '';\r\n            var $selectedBtn = $('.course-type-btn.selected').first();\r\n\r\n            if ((!selectedCourseType || !selectedfeaturedinmage) && $selectedBtn.length) {\r\n                if (!selectedCourseType) {\r\n                    selectedCourseType = $selectedBtn.attr('data-value') || '';\r\n                    $('#select_course_type').val(selectedCourseType);\r\n                }\r\n                if (!selectedfeaturedinmage) {\r\n                    selectedfeaturedinmage = $selectedBtn.attr('data-image') || '';\r\n                    var $rowImg = $selectedBtn.find('.cpc-rc-course-image').first();\r\n                    if (!selectedfeaturedinmage && $rowImg.length) {\r\n                        selectedfeaturedinmage = $rowImg.attr('src') || '';\r\n                    }\r\n                    $('#select_course_type_image').val(selectedfeaturedinmage);\r\n                }\r\n            }\r\n\r\n            var parsed = (typeof window.cprParseCourseSelectionValue === 'function')\r\n                ? window.cprParseCourseSelectionValue(selectedCourseType)\r\n                : { title: selectedCourseType, priceDisplay: '' };\r\n            var course_title_lo = parsed.title || '';\r\n            var priceDisplay = parsed.priceDisplay || '';\r\n\r\n            $(\".course_title_lo\").html(course_title_lo);\r\n            $(\"#enroll_course_type\").val(course_title_lo);\r\n            $(\".course_price_lo\").html(priceDisplay || '$0.00');\r\n            if (selectedfeaturedinmage) {\r\n                $(\".course_fea_image_wrap\").html(\"<img src='\" + selectedfeaturedinmage.replace(\/'\/g, '%27') + \"' class='img_course' alt=''>\");\r\n            }\r\n\r\n            \/\/ Convert selectedCourseType to corresponding key in the array\r\n         \r\n                var courseKey = course_title_lo\r\n                            .toLowerCase()\r\n                            .trim()\r\n                            .replace(\/&\/g, ' ')\r\n                            .replace(\/\\s+\/g, ' ');\r\n            console.log(\"courseKey\", courseAvailability[courseKey]);\r\n            \/\/ Check if the course key exists in the array and if its value is 1 or true\r\n            if (courseAvailability[courseKey] == 1) {\r\n                $('#location_submit_btn').prop('disabled', true);\r\n            } else {\r\n                $('#location_submit_btn').prop('disabled', false);\r\n            }\r\n        };\r\n\r\n    });\r\n<\/script>\r\n\r\n<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-edbc6bd elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"edbc6bd\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-b544955\" data-id=\"b544955\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f9500a4 elementor-widget elementor-widget-heading\" data-id=\"f9500a4\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">CPR CART<br> Downtown Portland<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9e9cb33 e-grid-align-left elementor-shape-rounded elementor-grid-0 elementor-widget elementor-widget-social-icons\" data-id=\"9e9cb33\" data-element_type=\"widget\" data-widget_type=\"social-icons.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-social-icons-wrapper elementor-grid\">\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon-google elementor-repeater-item-aab9971\" href=\"#\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\">Google<\/span>\n\t\t\t\t\t\t<svg class=\"e-font-icon-svg e-fab-google\" viewBox=\"0 0 488 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z\"><\/path><\/svg>\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon-apple elementor-repeater-item-e9a7123\" href=\"#\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\">Apple<\/span>\n\t\t\t\t\t\t<svg class=\"e-font-icon-svg e-fab-apple\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z\"><\/path><\/svg>\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon- elementor-repeater-item-00104c9\" href=\"#\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\"><\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon-yelp elementor-repeater-item-cb98768\" href=\"#\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\">Yelp<\/span>\n\t\t\t\t\t\t<svg class=\"e-font-icon-svg e-fab-yelp\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z\"><\/path><\/svg>\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-acfe4ad elementor-widget elementor-widget-text-editor\" data-id=\"acfe4ad\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><b>View us on Google, Apple, Yelp &amp; Bing!<\/b><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-364621e\" data-id=\"364621e\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-dbedf3d elementor-widget elementor-widget-google_maps\" data-id=\"dbedf3d\" data-element_type=\"widget\" data-widget_type=\"google_maps.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-custom-embed\">\n\t\t\t<iframe loading=\"lazy\"\n\t\t\t\t\tsrc=\"https:\/\/maps.google.com\/maps?q=111%20SW%205th%20Ave%20Suite%203150%2C%20Portland%2C%20OR%2097204&#038;t=m&#038;z=10&#038;output=embed&#038;iwloc=near\"\n\t\t\t\t\ttitle=\"111 SW 5th Ave Suite 3150, Portland, OR 97204\"\n\t\t\t\t\taria-label=\"111 SW 5th Ave Suite 3150, Portland, OR 97204\"\n\t\t\t><\/iframe>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-998fbc5 elementor-widget elementor-widget-text-editor\" data-id=\"998fbc5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><span style=\"color: #626367; background-color: var(--base-3);\">Address: <span data-sheets-root=\"1\">111 SW 5th Ave Suite 3150, Portland, OR 97204<\/span><br \/>Phone: 888-528-7805\u00a0| Email: info@cprcart.com<\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3ed10c3e elementor-section-full_width elementor-section-stretched elementor-section-height-default elementor-section-height-default elementor-invisible\" data-id=\"3ed10c3e\" data-element_type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;slideInUp&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-118da3c\" data-id=\"118da3c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-4a831d0 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4a831d0\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-1cfec825\" data-id=\"1cfec825\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-471fb379 elementor-widget elementor-widget-heading\" data-id=\"471fb379\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span>The Future of CPR Training<\/span><\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-15b7dfc6 elementor-widget elementor-widget-heading\" data-id=\"15b7dfc6\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span>CPR Cart is an innovative new way to get CPR certified or renewed without spending hours in class. CPR Cart is a self-service (RQI) automated manikin station, approved for BLS, ACLS, PALS certification &amp; recertification. Hands-on training takes less than 30 minutes and appointments are available 24\/7 at most locations. Upon completion instantly receive your official AHA eCard.<\/span><\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c38d439 elementor-align-center btn-space contact_btn elementor-widget elementor-widget-button\" data-id=\"c38d439\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"tel:8885287805\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Call Us: 888-528-7805<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>CPR CARTDowntown Portland Visit our CPR Cart location in Downtown Portland and get your BLS, ACLS, PALS certification or renewal done fast. It Just takes 2 steps to instantly receive your AHA eCard &amp; CEU&#8217;s. Part 1: Online Self-Paced TrainingPart 2: In-Person Skills with CPR Cart (RQI) BLS, ACLS, PALS Training &amp; Certification Downtown Portland &#8230; <a title=\"Downtown Portland\" class=\"read-more\" href=\"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/downtown-portland\/\" aria-label=\"Read more about Downtown Portland\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":30163,"parent":13431,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-13464","page","type-page","status-publish","has-post-thumbnail"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>CPR Certification in Downtown Portland | BLS, ACLS, &amp; PALS<\/title>\n<meta name=\"description\" content=\"Get CPR certified fast in Downtown Portland. We offer flexible BLS, ACLS &amp; PALS certification options with same-day AHA eCards. Sign up now to reserve your spot!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/downtown-portland\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CPR Certification in Downtown Portland | BLS, ACLS, &amp; PALS\" \/>\n<meta property=\"og:description\" content=\"Get CPR certified fast in Downtown Portland. We offer flexible BLS, ACLS &amp; PALS certification options with same-day AHA eCards. Sign up now to reserve your spot!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/downtown-portland\/\" \/>\n<meta property=\"og:site_name\" content=\"CPR Cart LLC\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CPR Certification in Downtown Portland | BLS, ACLS, & PALS","description":"Get CPR certified fast in Downtown Portland. We offer flexible BLS, ACLS & PALS certification options with same-day AHA eCards. Sign up now to reserve your spot!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/downtown-portland\/","og_locale":"en_US","og_type":"article","og_title":"CPR Certification in Downtown Portland | BLS, ACLS, & PALS","og_description":"Get CPR certified fast in Downtown Portland. We offer flexible BLS, ACLS & PALS certification options with same-day AHA eCards. Sign up now to reserve your spot!","og_url":"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/downtown-portland\/","og_site_name":"CPR Cart LLC","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/downtown-portland\/","url":"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/downtown-portland\/","name":"CPR Certification in Downtown Portland | BLS, ACLS, & PALS","isPartOf":{"@id":"https:\/\/rqibridge.com\/crpt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/downtown-portland\/#primaryimage"},"image":{"@id":"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/downtown-portland\/#primaryimage"},"thumbnailUrl":"","datePublished":"2025-08-01T08:27:32+00:00","dateModified":"2025-08-01T08:27:32+00:00","description":"Get CPR certified fast in Downtown Portland. We offer flexible BLS, ACLS & PALS certification options with same-day AHA eCards. Sign up now to reserve your spot!","breadcrumb":{"@id":"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/downtown-portland\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/downtown-portland\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/downtown-portland\/#primaryimage","url":"","contentUrl":""},{"@type":"BreadcrumbList","@id":"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/downtown-portland\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rqibridge.com\/crpt\/"},{"@type":"ListItem","position":2,"name":"Locations","item":"https:\/\/rqibridge.com\/crpt\/locations\/"},{"@type":"ListItem","position":3,"name":"Oregon","item":"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/"},{"@type":"ListItem","position":4,"name":"Portland","item":"https:\/\/rqibridge.com\/crpt\/locations\/oregon\/portland\/"},{"@type":"ListItem","position":5,"name":"Downtown Portland"}]},{"@type":"WebSite","@id":"https:\/\/rqibridge.com\/crpt\/#website","url":"https:\/\/rqibridge.com\/crpt\/","name":"CPR Cart LLC","description":"CPR Cart LLC","publisher":{"@id":"https:\/\/rqibridge.com\/crpt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rqibridge.com\/crpt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/rqibridge.com\/crpt\/#organization","name":"CPR Cart LLC","url":"https:\/\/rqibridge.com\/crpt\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rqibridge.com\/crpt\/#\/schema\/logo\/image\/","url":"https:\/\/rqibridge.com\/crpt\/wp-content\/uploads\/2024\/07\/cpr-cart-logo.png","contentUrl":"https:\/\/rqibridge.com\/crpt\/wp-content\/uploads\/2024\/07\/cpr-cart-logo.png","width":1622,"height":402,"caption":"CPR Cart LLC"},"image":{"@id":"https:\/\/rqibridge.com\/crpt\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/rqibridge.com\/crpt\/wp-json\/wp\/v2\/pages\/13464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rqibridge.com\/crpt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rqibridge.com\/crpt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/rqibridge.com\/crpt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rqibridge.com\/crpt\/wp-json\/wp\/v2\/comments?post=13464"}],"version-history":[{"count":0,"href":"https:\/\/rqibridge.com\/crpt\/wp-json\/wp\/v2\/pages\/13464\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/rqibridge.com\/crpt\/wp-json\/wp\/v2\/pages\/13431"}],"wp:attachment":[{"href":"https:\/\/rqibridge.com\/crpt\/wp-json\/wp\/v2\/media?parent=13464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}