{"id":28058,"date":"2023-10-25T23:09:05","date_gmt":"2023-10-25T15:09:05","guid":{"rendered":"https:\/\/www.goglobalsafe.com\/?page_id=28058"},"modified":"2026-07-29T15:20:27","modified_gmt":"2026-07-29T07:20:27","slug":"oshc","status":"publish","type":"page","link":"https:\/\/www.goglobalsafe.com\/zh\/oshc\/","title":{"rendered":"\u6fb3\u5927\u5229\u4e9a\u5b66\u751f\u5065\u5eb7\u4fdd\u9669 OSHC"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"28058\" class=\"elementor elementor-28058\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-005bd4d elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"005bd4d\" data-element_type=\"section\" id=\"Section3\">\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-100 elementor-top-column elementor-element elementor-element-d9bc1e5\" data-id=\"d9bc1e5\" 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-58d52f2 elementor-widget elementor-widget-shortcode\" data-id=\"58d52f2\" 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\t\t<div class=\"elementor-shortcode\"><script src=\"\/wp-content\/static\/js\/vue.global.js\"><\/script>\n<script src=\"\/wp-content\/static\/js\/axios.min.js\"><\/script>\n<link rel=\"stylesheet\" href=\"\/wp-content\/plugins\/elementor\/assets\/lib\/font-awesome\/css\/all.min.css\">\n<link rel=\"stylesheet\" href=\"\/wp-content\/themes\/astra\/css\/ggs-health-cover-v34.css?v=35.7\">\n\n<div id=\"ggs-oshc-app\" class=\"ggs-health-cover\" v-cloak>\n    <section class=\"hc-hero\">\n        <div class=\"hc-container hc-hero-inner\">\n            <div class=\"hc-hero-eyebrow\"><i class=\"fas fa-shield-alt\" aria-hidden=\"true\"><\/i>{{ copy.heroEyebrow }}<\/div>\n            <h1>\n                <span>{{ copy.heroLead }}<\/span>&nbsp;\n                <span class=\"hc-hero-highlight\">{{ copy.heroFocus }}<\/span>&nbsp;\n                <span>{{ copy.heroTail }}<\/span>\n            <\/h1>\n            <p class=\"hc-hero-copy\">{{ copy.heroDescription }}<\/p>\n            <div class=\"hc-hero-actions\">\n                <a class=\"hc-hero-cta\" href=\"#compareAll\">{{ copy.comparePlans }}<\/a>\n                <div class=\"hc-trust-inline\">\n                    <span><i class=\"fas fa-shield-alt\" aria-hidden=\"true\"><\/i>{{ copy.visaCompliantShort }}<\/span>\n                    <span><i class=\"fas fa-bolt\" aria-hidden=\"true\"><\/i>{{ copy.instantDelivery }}<\/span>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <div id=\"compareAll\" class=\"hc-controls-wrap\">\n        <div class=\"hc-container\">\n            <div class=\"hc-control-card\">\n                <div class=\"hc-control-grid\">\n                    <div class=\"hc-field\">\n                        <label>{{ copy.covered }}<\/label>\n                        <select v-model=\"coverageSelection\">\n                            <option v-for=\"option in coverageOptions\" :key=\"option.value\" :value=\"option.value\">{{ option.label }}<\/option>\n                        <\/select>\n                    <\/div>\n                    <div class=\"hc-field\">\n                        <label>{{ copy.startDate }}<\/label>\n                        <input id=\"start\" type=\"date\" v-model=\"startDate\" :min=\"today\" @change=\"fetchQuotes\">\n                    <\/div>\n                    <div class=\"hc-field\">\n                        <label>{{ copy.endDate }}<\/label>\n                        <input id=\"end\" type=\"date\" v-model=\"endDate\" :min=\"startDate\" @change=\"fetchQuotes\">\n                    <\/div>\n                    <button class=\"hc-date-btn\" type=\"button\" @click=\"openCalculator\"><i class=\"fas fa-calculator\" aria-hidden=\"true\"><\/i>{{ copy.calculator }}<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <main>\n        <section id=\"showing\" class=\"hc-section\">\n            <div class=\"hc-container\">\n                <div class=\"hc-info-banner\"><i class=\"fas fa-shield-alt\" aria-hidden=\"true\"><\/i>{{ copy.pricingNotice }}<\/div>\n                <div v-if=\"quoteError\" class=\"hc-info-banner hc-error\">{{ quoteError }}<\/div>\n\n                <div v-if=\"loading\" class=\"hc-loading\">\n                    <div class=\"hc-spinner\"><\/div>\n                    {{ copy.loading }}\n                <\/div>\n\n                <div v-else-if=\"!insurances.length\" class=\"hc-empty\">{{ copy.noPlans }}<\/div>\n\n                <div v-else class=\"hc-plan-grid\">\n                    <article\n                        v-for=\"insurance in insurances\"\n                        :key=\"insurance.id\"\n                        class=\"hc-plan-card\"\n                        :class=\"{ open: expandedPlans.includes(insurance.id) }\"\n                    >\n                        <div class=\"hc-plan-header\">\n                            <div class=\"hc-plan-logo\">\n                                <img v-if=\"insurance.img && insurance.img.url\" :src=\"insurance.img.url\" :alt=\"planMeta(insurance.id).provider\">\n                                <strong v-else class=\"notranslate\" translate=\"no\" lang=\"en\" data-no-translation=\"\" data-no-auto-translation=\"\">{{ planMeta(insurance.id).provider }}<\/strong>\n                            <\/div>\n                            <div class=\"hc-plan-meta\">\n                                <div class=\"hc-plan-title-row\">\n                                    <div class=\"hc-plan-provider notranslate\" translate=\"no\" lang=\"en\" data-no-translation=\"\" data-no-auto-translation=\"\">{{ planMeta(insurance.id).provider }}<\/div>\n                                    <div class=\"hc-plan-subtitle notranslate\" translate=\"no\" lang=\"en\" data-no-translation=\"\" data-no-auto-translation=\"\">{{ planMeta(insurance.id).subtitle }}<\/div>\n                                    <span v-if=\"planMeta(insurance.id).badge\" class=\"hc-card-badge\" :class=\"planMeta(insurance.id).badgeClass\">\n                                        {{ planMeta(insurance.id).badge }}\n                                    <\/span>\n                                <\/div>\n                                <div class=\"hc-tag-list\">\n                                    <span v-for=\"tag in planMeta(insurance.id).tags\" :key=\"tag\" class=\"hc-mini-tag\">{{ tag }}<\/span>\n                                <\/div>\n                                <p class=\"hc-plan-summary\">{{ planMeta(insurance.id).summary }}<\/p>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"hc-plan-footer\">\n                            <div class=\"hc-price-box\">\n                                <div class=\"hc-price-eyebrow\">{{ copy.annualPremium }}<\/div>\n                                <div class=\"hc-old-price\">{{ oldPrice(insurance) || '\\u00a0' }}<\/div>\n                                <div class=\"hc-price-row\">\n                                    <span class=\"hc-price-amount\" :class=\"{ 'hc-sale': insurance.id === 'INSURANCE-OSHC:2' }\">{{ insurance.amount }}<\/span>\n                                    <span class=\"hc-currency\">\u6fb3\u5143<\/span>\n                                <\/div>\n                                <div class=\"hc-price-note\">{{ priceNote(insurance) || '\\u00a0' }}<\/div>\n                            <\/div>\n\n                            <div class=\"hc-action-stack\">\n                                <button class=\"hc-btn hc-ghost hc-block\" type=\"button\" :disabled=\"!documentUrl(insurance.id)\" @click=\"openDocument(insurance.id)\">\n                                    PDF\n                                <\/button>\n                                <div class=\"hc-action-main\">\n                                    <button class=\"hc-btn hc-primary\" type=\"button\" @click=\"selectPlan(insurance)\">{{ copy.select }}<\/button>\n                                    <button class=\"hc-btn hc-expand\" type=\"button\" :aria-label=\"copy.details\" :aria-expanded=\"expandedPlans.includes(insurance.id)\" @click=\"togglePlan(insurance.id)\"><i class=\"fas fa-chevron-down\" aria-hidden=\"true\"><\/i><\/button>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n\n                        <ul class=\"hc-plan-features\">\n                            <li v-for=\"feature in planMeta(insurance.id).features\" :key=\"feature\">\n                                <span class=\"hc-check\">\u2713<\/span><span>{{ feature }}<\/span>\n                            <\/li>\n                        <\/ul>\n                    <\/article>\n                <\/div>\n\n                <div class=\"hc-plan-compare\">\n                    <button class=\"hc-jump-btn\" type=\"button\" @click=\"openComparison\">{{ copy.fullComparison }} <i class=\"fas fa-arrow-down\" aria-hidden=\"true\"><\/i><\/button>\n                <\/div>\n            <\/div>\n        <\/section>\n\n        <section class=\"hc-module hc-alt\">\n            <div class=\"hc-container\">\n                <div class=\"hc-section-title\">\n                    <h2>{{ copy.coverTitle }}<\/h2>\n                    <div class=\"hc-line\"><\/div>\n                <\/div>\n                <div class=\"hc-cover-grid\">\n                    <article v-for=\"item in coverItems\" :key=\"item.title\" class=\"hc-cover-card\">\n                        <div class=\"hc-icon-wrap\">{{ item.icon }}<\/div>\n                        <h3>{{ item.title }}<\/h3>\n                        <p>{{ item.description }}<\/p>\n                    <\/article>\n                <\/div>\n            <\/div>\n        <\/section>\n\n        <section ref=\"comparisonSection\" class=\"hc-module\">\n            <div class=\"hc-container\">\n                <div class=\"hc-accordion\" :class=\"{ open: comparisonOpen }\">\n                    <button class=\"hc-accordion-button\" type=\"button\" @click=\"comparisonOpen = !comparisonOpen\">\n                        <h3>{{ copy.fullComparisonTable }}<\/h3>\n                        <span class=\"hc-accordion-circle\"><i class=\"fas fa-chevron-down\" aria-hidden=\"true\"><\/i><\/span>\n                    <\/button>\n                    <div class=\"hc-accordion-panel\">\n                        <div class=\"hc-table-scroll\">\n                            <table class=\"hc-compare-table\">\n                                <thead>\n                                    <tr>\n                                        <th>{{ copy.feature }}<\/th>\n                                        <th v-for=\"insurance in insurances\" :key=\"insurance.id\">\n                                            <span class=\"hc-table-logo\">\n                                                <img v-if=\"insurance.img && insurance.img.url\" :src=\"insurance.img.url\" :alt=\"planMeta(insurance.id).provider\">\n                                            <\/span>\n                                            <span class=\"notranslate\" translate=\"no\" lang=\"en\" data-no-translation=\"\" data-no-auto-translation=\"\">{{ planMeta(insurance.id).comparisonLabel }}<\/span>\n                                        <\/th>\n                                    <\/tr>\n                                <\/thead>\n                                <tbody>\n                                    <template v-for=\"(row, rowIndex) in comparisonRows\" :key=\"rowIndex\">\n                                        <tr v-if=\"row.section\" class=\"hc-section-row\">\n                                            <td>{{ row.section }}<\/td>\n                                            <td :colspan=\"insurances.length\" aria-hidden=\"true\"><\/td>\n                                        <\/tr>\n                                        <tr v-else>\n                                            <td class=\"hc-row-label\">{{ row.label }}<\/td>\n                                            <td v-for=\"insurance in insurances\" :key=\"insurance.id\">\n                                                <button v-if=\"row.document\" class=\"hc-doc-link\" type=\"button\" @click=\"openDocument(insurance.id)\">{{ copy.check }}<\/button>\n                                                <span v-else-if=\"comparisonValue(row, insurance.id) === true\" class=\"hc-table-check\">\u2713<\/span>\n                                                <span v-else-if=\"comparisonValue(row, insurance.id) === false\" class=\"hc-table-no\">\u00d7<\/span>\n                                                <span v-else v-html=\"comparisonValue(row, insurance.id)\"><\/span>\n                                            <\/td>\n                                        <\/tr>\n                                    <\/template>\n                                <\/tbody>\n                            <\/table>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n\n        <section class=\"hc-module hc-alt\">\n            <div class=\"hc-container\">\n                <div class=\"hc-section-title\"><h2>{{ copy.whyChoose }}<\/h2><\/div>\n                <div class=\"hc-reason-grid\">\n                    <article v-for=\"(item,index) in reasonItems\" :key=\"item.title\" class=\"hc-reason-card\" :class=\"index < 2 ? 'hc-large' : 'hc-small'\">\n                        <div>\n                            <div class=\"hc-reason-top\">\n                                <div class=\"hc-reason-icon\">{{ item.icon }}<\/div>\n                                <div class=\"hc-reason-copy\"><h3>{{ item.title }}<\/h3><\/div>\n                            <\/div>\n                            <p class=\"hc-reason-desc\">{{ item.description }}<\/p>\n                        <\/div>\n                        <div class=\"hc-reason-chip-row\"><span class=\"hc-reason-chip\">\u2713 {{ item.chip }}<\/span><\/div>\n                    <\/article>\n                <\/div>\n            <\/div>\n        <\/section>\n\n        <section class=\"hc-dark-band\">\n            <div class=\"hc-container\">\n                <div class=\"hc-section-title\">\n                    <h2>{{ copy.trusted }}<\/h2>\n                    <div class=\"hc-rating\">\u2605\u2605\u2605\u2605\u2605<\/div>\n                    <p>{{ copy.rating }}<\/p>\n                <\/div>\n                <div class=\"hc-testimonial-grid\">\n                    <article v-for=\"item in testimonials\" :key=\"item.name\" class=\"hc-testimonial\">\n                        <div class=\"hc-avatar\">\u265f<\/div>\n                        <div class=\"hc-stars\">\u2605\u2605\u2605\u2605\u2605<\/div>\n                        <p>\u201c{{ item.text }}\u201d<\/p>\n                        <div class=\"hc-testimonial-meta\"><span>{{ item.name }}<\/span><span class=\"hc-school\">{{ item.school }}<\/span><\/div>\n                    <\/article>\n                <\/div>\n            <\/div>\n        <\/section>\n    <\/main>\n\n    <div v-if=\"calculatorOpen\" class=\"hc-modal-mask\" @click.self=\"closeCalculator\">\n        <div class=\"hc-modal hc-date-modal\" role=\"dialog\" aria-modal=\"true\" :aria-label=\"copy.calculatorTitle\">\n            <div class=\"hc-modal-header\">\n                <button class=\"hc-modal-close\" type=\"button\" @click=\"closeCalculator\">\u00d7<\/button>\n                <h3>{{ copy.calculatorTitle }}<\/h3>\n                <p>{{ copy.calculatorSubtitle }}<\/p>\n            <\/div>\n            <div class=\"hc-modal-body hc-date-layout\">\n                <section class=\"hc-panel\">\n                    <div class=\"hc-panel-head\">\ud83e\uddee {{ copy.courseDetails }}<\/div>\n                    <div class=\"hc-panel-body\">\n                        <div class=\"hc-form-grid\">\n                            <div class=\"hc-field\">\n                                <label>{{ copy.courseStart }}<\/label>\n                                <input type=\"date\" v-model=\"calculator.courseStart\">\n                            <\/div>\n                            <div class=\"hc-field\">\n                                <label>{{ copy.courseEnd }}<\/label>\n                                <input type=\"date\" v-model=\"calculator.courseEnd\" :min=\"calculator.courseStart\">\n                            <\/div>\n                        <\/div>\n                        <div class=\"hc-arrival-list\">\n                            <span class=\"hc-field-label\">{{ copy.arrivalPlan }}<\/span>\n                            <button class=\"hc-arrival-option\" :class=\"{active: calculator.arrivalDays === 30}\" type=\"button\" @click=\"calculator.arrivalDays = 30\">\n                                <span class=\"hc-arrival-radio\"><\/span><span><strong>{{ copy.arrive30 }}<\/strong><small>{{ copy.arrive30Hint }}<\/small><\/span>\n                            <\/button>\n                            <button class=\"hc-arrival-option\" :class=\"{active: calculator.arrivalDays === 14}\" type=\"button\" @click=\"calculator.arrivalDays = 14\">\n                                <span class=\"hc-arrival-radio\"><\/span><span><strong>{{ copy.arrive14 }}<\/strong><small>{{ copy.arrive14Hint }}<\/small><\/span>\n                            <\/button>\n                        <\/div>\n                        <button class=\"hc-btn hc-primary hc-block\" style=\"margin-top:16px\" type=\"button\" @click=\"calculateDates\">{{ copy.calculate }}<\/button>\n                    <\/div>\n                <\/section>\n                <section class=\"hc-panel\">\n                    <div class=\"hc-panel-head\"><span>{{ copy.recommendedPolicy }}<\/span><span>\u2713 {{ copy.visaCompliant }}<\/span><\/div>\n                    <div class=\"hc-panel-body\">\n                        <div v-if=\"calculator.error\" class=\"hc-info-banner hc-error\">{{ calculator.error }}<\/div>\n                        <div v-if=\"!calculator.result\" class=\"hc-result-placeholder\">{{ copy.awaitingInput }}<\/div>\n                        <div v-else class=\"hc-calc-result\">\n                            <div class=\"hc-result-dates\">\n                                <div class=\"hc-result-date\"><small>{{ copy.policyStart }}<\/small><strong>{{ formatLongDate(calculator.result.start) }}<\/strong><\/div>\n                                <span>\u2192<\/span>\n                                <div class=\"hc-result-date\"><small>{{ copy.policyEnd }}<\/small><strong>{{ formatLongDate(calculator.result.end) }}<\/strong><\/div>\n                            <\/div>\n                            <div class=\"hc-result-note\"><strong>{{ copy.ruleTitle }}<\/strong><br>{{ calculator.result.note }}<\/div>\n                            <button class=\"hc-btn hc-primary hc-block\" type=\"button\" @click=\"confirmCalculatedDates\">{{ copy.confirmDates }}<\/button>\n                        <\/div>\n                    <\/div>\n                <\/section>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div v-if=\"loginModal\" class=\"hc-modal-mask\" @click.self=\"closeLogin\">\n        <div class=\"hc-modal hc-small\" role=\"dialog\" aria-modal=\"true\">\n            <div class=\"hc-modal-header\">\n                <button class=\"hc-modal-close\" type=\"button\" @click=\"closeLogin\">\u00d7<\/button>\n                <h3>{{ copy.readyToBuy }}<\/h3>\n                <p>{{ loginNeedsPassword ? copy.enterPassword : copy.enterEmail }}<\/p>\n            <\/div>\n            <form class=\"hc-modal-body\" @submit.prevent=\"submitLogin\" action=\"\">\n                <div class=\"hc-form-row\"><label>\u7535\u5b50\u90ae\u4ef6<\/label><input v-model.trim=\"loginForm.email\" type=\"email\" autocomplete=\"email\" required><\/div>\n                <div v-if=\"loginNeedsPassword\" class=\"hc-form-row\"><label>{{ copy.password }}<\/label><input v-model=\"loginForm.password\" type=\"password\" autocomplete=\"current-password\" required><\/div>\n                <div v-if=\"loginError\" class=\"hc-form-error\">{{ loginError }}<\/div>\n                <button class=\"hc-btn hc-dark hc-block\" type=\"submit\" :disabled=\"loginLoading\">{{ loginLoading ? copy.loading : (loginNeedsPassword ? copy.login : copy.getStarted) }}<\/button>\n            <input type=\"hidden\" name=\"trp-form-language\" value=\"zh\"\/><\/form>\n        <\/div>\n    <\/div>\n\n<\/div>\n\n<script>\n(() => {\n    const { createApp, ref, reactive, computed, nextTick, onMounted } = Vue;\n\n    createApp({\n        setup() {\n            const isZh = window.location.pathname.includes('\/zh');\n            const text = (en, zh) => isZh ? zh : en;\n            const api = window.apiClient || axios;\n            const urlParams = new URLSearchParams(window.location.search);\n            const preservedSourceParams = new URLSearchParams();\n            ['reff', 'ref', 'agent', 'agent_id', 'affiliate', 'affiliate_id', 'yisihui', 'providers', 'provider', 'p', 'cfg'].forEach(key => {\n                if (urlParams.has(key)) preservedSourceParams.set(key, urlParams.get(key));\n            });\n            const apiEmailExist = 'https:\/\/agent.goglobalsafe.com\/api\/v1\/student\/email\/email_exist';\n            const apiLogin = 'https:\/\/agent.goglobalsafe.com\/api\/v1\/student\/user\/login';\n            const formApi = 'https:\/\/agents.flywire.com\/api\/destinations\/';\n            const apiHeaders = { 'X-Authentication-Key': ' HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K' };\n\n            const providerIds = {\n                nib: 'INSURANCE-OSHC:2',\n                nib_student_care: 'INSURANCE-OSHC:100',\n                allianz_care: 'INSURANCE-OSHC:1',\n                medibank: 'INSURANCE-OSHC:3',\n                bupa: 'INSURANCE-OSHC:4',\n                ahm: 'INSURANCE-OSHC:5'\n            };\n            const providerBits = { nib: 1, nib_student_care: 2, allianz_care: 4, medibank: 8, bupa: 16, ahm: 32 };\n            const providerIdsByCode = { 1: providerIds.allianz_care, 2: providerIds.nib, 3: providerIds.medibank, 4: providerIds.bupa, 5: providerIds.ahm, 100: providerIds.nib_student_care };\n            const planOrder = [\n                providerIds.nib,\n                providerIds.allianz_care,\n                providerIds.medibank,\n                providerIds.bupa,\n                providerIds.ahm,\n                providerIds.nib_student_care\n            ];\n            const providerIdFromToken = token => {\n                const value = String(token || '').trim();\n                const normalized = value.toLowerCase().replace(\/[\\s-]+\/g, '_');\n                if (providerIds[normalized]) return providerIds[normalized];\n                if (providerIdsByCode[value]) return providerIdsByCode[value];\n                return Object.values(providerIds).includes(value) ? value : null;\n            };\n\n            const readSharedProviders = () => {\n                let providers = String(urlParams.get('providers') || '').trim().toLowerCase();\n                if (providers === 'all') return new Set(Object.values(providerIds));\n                if (providers.startsWith('[')) {\n                    try {\n                        const decodedProviders = JSON.parse(providers);\n                        const ids = Array.isArray(decodedProviders) ? decodedProviders.map(providerIdFromToken).filter(Boolean) : [];\n                        if (ids.length) return new Set(ids);\n                    } catch (error) {\n                        console.warn('Unable to read provider list.', error);\n                    }\n                }\n                if (\/^\\d+(?:[-,]\\d+)*$\/.test(providers)) {\n                    const ids = providers.split(\/[-,]\/).map(code => providerIdsByCode[code]).filter(Boolean);\n                    if (ids.length) return new Set(ids);\n                }\n                const encodedSelection = String(urlParams.get('p') || '').trim().toLowerCase();\n                if (\/^[0-9a-z]+$\/.test(encodedSelection)) {\n                    const mask = Number.parseInt(encodedSelection, 36);\n                    if (Number.isSafeInteger(mask) && mask > 0) {\n                        return new Set(Object.entries(providerBits).filter(([, bit]) => (mask & bit) === bit).map(([key]) => providerIds[key]));\n                    }\n                }\n                if (!providers && urlParams.get('cfg')) {\n                    try {\n                        const encoded = urlParams.get('cfg').replace(\/-\/g, '+').replace(\/_\/g, '\/');\n                        const decoded = JSON.parse(atob(encoded.padEnd(Math.ceil(encoded.length \/ 4) * 4, '=')));\n                        providers = Array.isArray(decoded) ? decoded.join(',') : '';\n                    } catch (error) {\n                        console.warn('Unable to read legacy provider configuration.', error);\n                    }\n                }\n                return new Set(String(providers).split(',').map(providerIdFromToken).filter(Boolean));\n            };\n\n            const sharedProviderIds = readSharedProviders();\n            const toInputDate = date => {\n                const year = date.getFullYear();\n                const month = String(date.getMonth() + 1).padStart(2, '0');\n                const day = String(date.getDate()).padStart(2, '0');\n                return `${year}-${month}-${day}`;\n            };\n            const tomorrowDate = new Date();\n            tomorrowDate.setDate(tomorrowDate.getDate() + 1);\n            const defaultEnd = new Date();\n            defaultEnd.setFullYear(defaultEnd.getFullYear() + 2);\n            const today = toInputDate(new Date());\n            const adults = ref(String(urlParams.get('adults') || 1));\n            const children = ref(String(urlParams.get('children') || 0));\n            const startDate = ref(urlParams.get('start_date') || toInputDate(tomorrowDate));\n            const endDate = ref(urlParams.get('end_date') || toInputDate(defaultEnd));\n            if (startDate.value < today) startDate.value = today;\n\n            const insurances = ref([]);\n            const loading = ref(false);\n            const quoteError = ref('');\n            const expandedPlans = ref([]);\n            const comparisonOpen = ref(true);\n            const comparisonSection = ref(null);\n            const loginModal = ref(false);\n            const loginNeedsPassword = ref(false);\n            const loginLoading = ref(false);\n            const loginError = ref('');\n            const loginForm = reactive({ email: '', password: '' });\n            const selectedInsurance = reactive({ amount: null, img: null, adults: null, children: null, startDate: null, endDate: null, email: null, self: null });\n            const copy = reactive({\n                heroEyebrow: text('Subclass 500 Visa Compliant', '\u7b26\u5408 Subclass 500 \u7b7e\u8bc1\u8981\u6c42'),\n                heroLead: text('Overseas', '\u6d77\u5916'), heroFocus: text('Student', '\u7559\u5b66\u751f'), heroTail: text('Health Cover', '\u5065\u5eb7\u4fdd\u9669'),\n                heroDescription: text('Compare premium OSHC policies for your student visa. Get approved instantly, pay securely via Flywire, and enjoy complete peace of mind.', '\u5bf9\u6bd4\u9002\u5408\u6fb3\u6d32\u5b66\u751f\u7b7e\u8bc1\u7684\u4f18\u8d28 OSHC \u65b9\u6848\uff0c\u5feb\u901f\u83b7\u6279\u3001\u5b89\u5168\u652f\u4ed8\uff0c\u7559\u5b66\u4fdd\u969c\u66f4\u5b89\u5fc3\u3002'),\n                comparePlans: text('Compare Plans', '\u5bf9\u6bd4\u65b9\u6848'), visaCompliantShort: text('100% Visa Compliant', '\u7b26\u5408\u7b7e\u8bc1\u8981\u6c42'), instantDelivery: text('Instant Delivery', '\u5feb\u901f\u51fa\u5355'),\n                covered: text('Who is covered?', '\u53d7\u4fdd\u4eba'), startDate: text('Start Date', '\u5f00\u59cb\u65e5\u671f'), endDate: text('End Date', '\u7ed3\u675f\u65e5\u671f'),\n                calculator: text('Date Calculator', '\u65e5\u671f\u8ba1\u7b97\u5668'),\n                pricingNotice: text('OSHC prices are live premiums for your selected applicants and dates. All displayed plans use the current GoGlobalSafe quote service.', 'OSHC \u4ef7\u683c\u6765\u81ea\u5f53\u524d GoGlobalSafe \u62a5\u4ef7\u670d\u52a1\uff0c\u5e76\u6839\u636e\u53d7\u4fdd\u4eba\u6570\u548c\u65e5\u671f\u5b9e\u65f6\u8ba1\u7b97\u3002'),\n                loading: text('Loading current plans\u2026', '\u6b63\u5728\u52a0\u8f7d\u5f53\u524d\u8ba1\u5212\u2026'), noPlans: text('No plan is available for this configuration. Please adjust the dates or applicants.', '\u5f53\u524d\u6761\u4ef6\u6ca1\u6709\u53ef\u7528\u8ba1\u5212\uff0c\u8bf7\u8c03\u6574\u65e5\u671f\u6216\u53d7\u4fdd\u4eba\u6570\u3002'),\n                annualPremium: text('Annual Premium', '\u5e74\u5ea6\u4fdd\u8d39'), select: text('Select', '\u9009\u62e9'), details: text('Show plan details', '\u663e\u793a\u8ba1\u5212\u8be6\u60c5'),\n                fullComparison: text('View Full Detailed Comparison', '\u67e5\u770b\u5b8c\u6574\u8be6\u7ec6\u5bf9\u6bd4'), coverTitle: text('What does OSHC cover?', 'OSHC \u4fdd\u969c\u4ec0\u4e48\uff1f'),\n                fullComparisonTable: text('View Full Detailed Comparison Table', '\u67e5\u770b\u5b8c\u6574\u8be6\u7ec6\u5bf9\u6bd4\u8868'), feature: text('Feature', '\u4fdd\u969c\u9879\u76ee'), check: text('Check', '\u67e5\u770b'),\n                whyChoose: text('Why students choose GoGlobalSafe?', '\u4e3a\u4ec0\u4e48\u5b66\u751f\u9009\u62e9 GoGlobalSafe\uff1f'), trusted: text('Trusted by 10,000+ Students', '10,000+ \u5b66\u751f\u4fe1\u8d56'), rating: text('Rated 4.9\/5 by our verified customers.', '\u771f\u5b9e\u7528\u6237\u8bc4\u5206 4.9\/5\u3002'),\n                calculatorTitle: text('OSHC Date Calculator', 'OSHC \u65e5\u671f\u8ba1\u7b97\u5668'), calculatorSubtitle: text('Determine suitable health insurance dates for your Australian Student Visa (Subclass 500).', '\u8ba1\u7b97\u6fb3\u6d32\u5b66\u751f\u7b7e\u8bc1\uff08Subclass 500\uff09\u6240\u9700\u7684\u4fdd\u9669\u65e5\u671f\u3002'),\n                courseDetails: text('Course Details', '\u8bfe\u7a0b\u4fe1\u606f'), courseStart: text('Course Start Date', '\u8bfe\u7a0b\u5f00\u59cb\u65e5\u671f'), courseEnd: text('Course End Date', '\u8bfe\u7a0b\u7ed3\u675f\u65e5\u671f'), arrivalPlan: text('Arrival Plan', '\u62b5\u8fbe\u8ba1\u5212'),\n                arrive30: text('Arrive 1 Month Early', '\u63d0\u524d 1 \u4e2a\u6708\u62b5\u8fbe'), arrive30Hint: text('Recommended for settling in and orientation.', '\u9002\u5408\u63d0\u524d\u5b89\u987f\u548c\u53c2\u52a0\u8fce\u65b0\u6d3b\u52a8\u3002'),\n                arrive14: text('Arrive 14 Days Early', '\u63d0\u524d 14 \u5929\u62b5\u8fbe'), arrive14Hint: text('Minimum recommended buffer.', '\u5efa\u8bae\u7684\u6700\u4f4e\u7f13\u51b2\u65f6\u95f4\u3002'), calculate: text('Calculate Recommended Dates', '\u8ba1\u7b97\u63a8\u8350\u65e5\u671f'),\n                recommendedPolicy: text('Recommended Policy', '\u63a8\u8350\u4fdd\u5355\u65e5\u671f'), visaCompliant: text('Visa Compliant', '\u7b26\u5408\u7b7e\u8bc1\u8981\u6c42'), awaitingInput: text('Enter the course start and end dates to generate the recommended policy period.', '\u8bf7\u8f93\u5165\u8bfe\u7a0b\u5f00\u59cb\u548c\u7ed3\u675f\u65e5\u671f\u4ee5\u751f\u6210\u63a8\u8350\u4fdd\u5355\u65e5\u671f\u3002'),\n                policyStart: text('Policy Start', '\u4fdd\u5355\u5f00\u59cb'), policyEnd: text('Policy End', '\u4fdd\u5355\u7ed3\u675f'), ruleTitle: text('Calculated using the existing Subclass 500 duration rules.', '\u6839\u636e\u73b0\u6709 Subclass 500 \u65e5\u671f\u89c4\u5219\u8ba1\u7b97\u3002'), confirmDates: text('Confirm & Save Dates', '\u786e\u8ba4\u5e76\u4fdd\u5b58\u65e5\u671f'),\n                readyToBuy: text('Ready to buy insurance?', '\u51c6\u5907\u597d\u8d2d\u4e70\u4fdd\u9669\u4e86\u5417\uff1f'), enterEmail: text('Enter your email to continue.', '\u8bf7\u8f93\u5165\u90ae\u7bb1\u7ee7\u7eed\u3002'), enterPassword: text('This email already has an account. Enter the password to continue.', '\u8be5\u90ae\u7bb1\u5df2\u6709\u8d26\u6237\uff0c\u8bf7\u8f93\u5165\u5bc6\u7801\u7ee7\u7eed\u3002'), password: text('Password', '\u5bc6\u7801'), login: text('Login', '\u767b\u5f55'), getStarted: text('Get started', '\u5f00\u59cb\u4f7f\u7528')\n            });\n\n            const coverageOptions = computed(() => {\n                const result = [];\n                for (let adultCount = 1; adultCount <= 2; adultCount += 1) {\n                    for (let childCount = 0; childCount <= 10; childCount += 1) {\n                        const label = isZh\n                            ? `${adultCount} \u4f4d\u6210\u4eba${childCount ? `\uff0c${childCount} \u4f4d\u513f\u7ae5` : '\uff0c\u65e0\u513f\u7ae5'}`\n                            : `${adultCount} ${adultCount === 1 ? 'adult' : 'adults'}, ${childCount} ${childCount === 1 ? 'child' : 'children'}`;\n                        result.push({ value: `${adultCount}-${childCount}`, label });\n                    }\n                }\n                return result;\n            });\n            const coverageSelection = computed({\n                get: () => `${adults.value}-${children.value}`,\n                set: value => {\n                    const [adultCount, childCount] = value.split('-');\n                    adults.value = adultCount;\n                    children.value = childCount;\n                    fetchQuotes();\n                }\n            });\n\n            const planMeta = id => {\n                const map = {\n                    'INSURANCE-OSHC:1': {\n                        provider: 'Allianz Care', subtitle: 'Standard OSHC', comparisonLabel: 'Allianz Standard OSHC', badge: '', badgeClass: '',\n                        tags: [text('Safety support app', '\u5b89\u5168\u652f\u6301\u5e94\u7528'), text('Covered video GP', '\u5305\u542b\u89c6\u9891 GP')],\n                        summary: text('Safety support app and covered video GP options.', '\u63d0\u4f9b\u5b89\u5168\u652f\u6301\u5e94\u7528\u548c\u53d7\u4fdd\u7684\u89c6\u9891 GP \u670d\u52a1\u3002'),\n                        features: [text('Condition 8501 compliant', '\u7b26\u5408 8501 \u6761\u4ef6'), text('100% MBS for in-hospital medical', '\u4f4f\u9662\u533b\u7597 100% MBS'), text('Prescription medicine benefits', '\u5904\u65b9\u836f\u798f\u5229'), text('24\/7 medical advice & assistance', '24\/7 \u533b\u7597\u5efa\u8bae\u4e0e\u534f\u52a9')]\n                    },\n                    'INSURANCE-OSHC:2': {\n                        provider: 'nib', subtitle: 'nib Core', comparisonLabel: 'nib Core', badge: '', badgeClass: '',\n                        tags: [text('Chinese support', '\u4e2d\u6587\u652f\u6301'), text('Save at partner clinics', '\u5408\u4f5c\u8bca\u6240\u4f18\u60e0')],\n                        summary: text('Pay less at partner clinics and claim easily through the nib App.', '\u5408\u4f5c\u8bca\u6240\u5c11\u57ab\u4ed8\uff0c\u53ef\u901a\u8fc7 nib App \u5feb\u901f\u7406\u8d54\u3002'),\n                        features: [text('Meets DHA visa requirements', '\u7b26\u5408 DHA \u7b7e\u8bc1\u8981\u6c42'), text('100% of State\/Territory rate for public hospital', '\u516c\u7acb\u533b\u9662\u6309\u5dde\/\u9886\u5730\u6807\u51c6 100% \u4fdd\u969c'), text('Emergency ambulance 100%', '\u7d27\u6025\u6551\u62a4\u8f66 100% \u4fdd\u969c'), text('Claim in a snap with nib App', '\u901a\u8fc7 nib App \u5feb\u901f\u7406\u8d54')]\n                    },\n                    'INSURANCE-OSHC:3': {\n                        provider: 'Medibank', subtitle: 'Essentials OSHC', comparisonLabel: 'Medibank Essentials', badge: text('Most Recommended', '\u6700\u63a8\u8350'), badgeClass: '',\n                        tags: [text('Chinese-friendly app', '\u4e2d\u6587\u53cb\u597d\u5e94\u7528'), text('Pay less upfront', '\u51cf\u5c11\u9884\u4ed8')],\n                        summary: text('Partner clinic network with lower upfront medical costs.', '\u5408\u4f5c\u8bca\u6240\u7f51\u7edc\u53ef\u964d\u4f4e\u5c31\u533b\u65f6\u7684\u9884\u4ed8\u8d39\u7528\u3002'),\n                        features: [text('100% MBS for GP consultations', 'GP \u770b\u8bca 100% MBS'), text('Unlimited emergency ambulance', '\u7d27\u6025\u6551\u62a4\u8f66\u4e0d\u9650\u989d'), text('24\/7 Student Health and Support Line', '24\/7 \u5b66\u751f\u5065\u5eb7\u652f\u6301\u70ed\u7ebf'), text('In-person local Medibank store', 'Medibank \u672c\u5730\u95e8\u5e97\u652f\u6301')]\n                    },\n                    'INSURANCE-OSHC:4': {\n                        provider: 'Bupa', subtitle: 'OSHC', comparisonLabel: 'Bupa OSHC', badge: '', badgeClass: '',\n                        tags: [text('24 \/ 7 video GP', '24\/7 \u89c6\u9891 GP'), text('150+ language support', '150+ \u8bed\u8a00\u652f\u6301')],\n                        summary: text('24\/7 online doctor visits with strong language support.', '\u5168\u5929\u5019\u7ebf\u4e0a\u770b\u533b\u751f\uff0c\u5e76\u63d0\u4f9b\u591a\u8bed\u8a00\u652f\u6301\u3002'),\n                        features: [text('100% MBS for GP & specialists', 'GP \u4e0e\u4e13\u79d1 100% MBS'), text('Waived mental health waiting periods', '\u514d\u9664\u5fc3\u7406\u5065\u5eb7\u7b49\u5f85\u671f'), text('Private room where available', '\u53ef\u7528\u65f6\u63d0\u4f9b\u79c1\u4eba\u75c5\u623f'), text('24 \/ 7 Bupa Student Advice Line', '24\/7 Bupa \u5b66\u751f\u54a8\u8be2\u70ed\u7ebf')]\n                    },\n                    'INSURANCE-OSHC:5': {\n                        provider: 'AHM', subtitle: 'OSHC', comparisonLabel: 'AHM OSHC', badge: '', badgeClass: '',\n                        tags: [],\n                        summary: text('AHM OSHC cover for international students.', '\u4e3a\u56fd\u9645\u5b66\u751f\u63d0\u4f9b AHM OSHC \u4fdd\u969c\u3002'),\n                        features: []\n                    },\n                    'INSURANCE-OSHC:100': {\n                        provider: 'nib', subtitle: 'Student Care', comparisonLabel: 'nib Student Care', badge: text('Premium', '\u9ad8\u914d'), badgeClass: 'hc-blue',\n                        tags: [text('Higher-tier cover', '\u66f4\u9ad8\u7b49\u7ea7\u4fdd\u969c'), text('Broader coverage', '\u66f4\u5e7f\u4fdd\u969c')],\n                        summary: text('Broader cover for students who want extra protection.', '\u9002\u5408\u5e0c\u671b\u83b7\u5f97\u989d\u5916\u4fdd\u62a4\u7684\u5b66\u751f\u3002'),\n                        features: [text('Includes preventative dental (no wait)', '\u5305\u542b\u9884\u9632\u7259\u79d1\u4e14\u65e0\u9700\u7b49\u5f85'), text('Psychology counselling included', '\u5305\u542b\u5fc3\u7406\u54a8\u8be2'), text('100% MBS for GP consultations', 'GP \u770b\u8bca 100% MBS'), text('No waiting period for ambulance', '\u6551\u62a4\u8f66\u4fdd\u969c\u65e0\u7b49\u5f85\u671f')]\n                    }\n                };\n                return map[id] || { provider: 'OSHC', subtitle: text('Student Cover', '\u5b66\u751f\u4fdd\u9669'), comparisonLabel: text('Student Cover', '\u5b66\u751f\u4fdd\u9669'), badge: '', badgeClass: '', tags: [], summary: '', features: [] };\n            };\n\n            const documents = {\n                en: {\n                    'INSURANCE-OSHC:1': 'https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2026\/07\/oshc-file\/Allianz-Care-OSHC-Standard-Policy-and-Member-Guide-EN.pdf',\n                    'INSURANCE-OSHC:2': 'https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2026\/07\/oshc-file\/nib-OSHC-Core-Fact-Sheet-EN.pdf',\n                    'INSURANCE-OSHC:3': 'https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2026\/07\/oshc-file\/Medibank-OSHC-Essentials-Cover-Summary-EN.pdf',\n                    'INSURANCE-OSHC:4': 'https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2026\/07\/oshc-file\/Bupa-OSHC-Brochure-EN.pdf',\n                    'INSURANCE-OSHC:5': 'https:\/\/www.ahmoshc.com.au\/content\/dam\/b2c\/docs\/ahm\/ahm_OSHC_Cover_Summary.pdf',\n                    'INSURANCE-OSHC:100': 'https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2026\/07\/oshc-file\/nib-OSHC-Student-Care-Fact-Sheet-EN.pdf'\n                },\n                zh: {\n                    'INSURANCE-OSHC:1': 'https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2026\/07\/oshc-file\/Allianz-Care-OSHC-Standard-Benefits-Flyer-ZH.pdf',\n                    'INSURANCE-OSHC:2': 'https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2026\/07\/oshc-file\/nib-OSHC-Core-Fact-Sheet-ZH.pdf',\n                    'INSURANCE-OSHC:3': 'https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2026\/07\/oshc-file\/Medibank-OSHC-Essentials-Member-Guide-ZH.pdf',\n                    'INSURANCE-OSHC:4': 'https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2026\/07\/oshc-file\/Bupa-OSHC-Brochure-ZH.pdf',\n                    'INSURANCE-OSHC:5': 'https:\/\/www.ahmoshc.com.au\/content\/dam\/b2c\/docs\/ahm\/ahm_OSHC_Cover_Summary.pdf',\n                    'INSURANCE-OSHC:100': 'https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2026\/07\/oshc-file\/nib-OSHC-Student-Care-Fact-Sheet-ZH.pdf'\n                }\n            };\n            const documentUrl = id => (isZh ? documents.zh : documents.en)[id] || '';\n            const openDocument = id => { if (documentUrl(id)) window.open(documentUrl(id), '_blank', 'noopener'); };\n            const numericAmount = insurance => Number(String(insurance && insurance.amount || '').replace(\/,\/g, ''));\n            const oldPrice = insurance => {\n                const amount = numericAmount(insurance);\n                if (insurance.id === providerIds.nib && Math.abs(amount - 1273) < 0.01) return '1,368.82 AUD';\n                return '';\n            };\n            const priceNote = insurance => insurance.id === providerIds.nib\n                ? text('GGS Special Rate', 'GGS \u7279\u60e0\u4ef7')\n                : '';\n\n            const coverItems = computed(() => [\n                { icon: '\u2695', title: text('Doctor', '\u533b\u751f'), description: text('Eligible doctor consultations are covered according to the Medicare Benefits Schedule.', '\u7b26\u5408\u6761\u4ef6\u7684\u533b\u751f\u770b\u8bca\u6309 MBS \u6807\u51c6\u4fdd\u969c\u3002') },\n                { icon: '\u271a', title: text('Hospital', '\u533b\u9662'), description: text('Cover for accommodation and medical services in eligible Australian hospitals.', '\u8986\u76d6\u7b26\u5408\u6761\u4ef6\u6fb3\u6d32\u533b\u9662\u7684\u4f4f\u5bbf\u548c\u533b\u7597\u670d\u52a1\u3002') },\n                { icon: '\u25cf', title: text('Prescription', '\u5904\u65b9\u836f'), description: text('Limited prescription medicine benefits apply according to each plan.', '\u5904\u65b9\u836f\u6839\u636e\u4e0d\u540c\u8ba1\u5212\u4eab\u6709\u76f8\u5e94\u4fdd\u969c\u3002') },\n                { icon: '\u2723', title: text('Ambulance', '\u6551\u62a4\u8f66'), description: text('Emergency ambulance cover for medically necessary transport.', '\u8986\u76d6\u533b\u7597\u5fc5\u8981\u7684\u7d27\u6025\u6551\u62a4\u8f66\u670d\u52a1\u3002') }\n            ]);\n            const reasonItems = computed(() => [\n                { icon: '$', title: text('Save More', '\u66f4\u7701\u94b1'), description: text('Compare current provider prices in one place.', '\u4e00\u6b21\u67e5\u770b\u5f53\u524d\u4fdd\u53f8\u4ef7\u683c\u3002'), chip: text('Compare fast', '\u5feb\u901f\u5bf9\u6bd4') },\n                { icon: '\u25a3', title: text('Pay Easier', '\u652f\u4ed8\u66f4\u65b9\u4fbf'), description: text('RMB and AUD payment options are supported.', '\u652f\u6301\u4eba\u6c11\u5e01\u548c\u6fb3\u5e01\u652f\u4ed8\u3002'), chip: 'Flywire' },\n                { icon: '\u2605', title: text('Official Partners', '\u5b98\u65b9\u5408\u4f5c'), description: text('Plans from recognized Australian providers.', '\u6765\u81ea\u8ba4\u53ef\u7684\u6fb3\u6d32\u4fdd\u53f8\u3002'), chip: text('Recognized', '\u8ba4\u53ef\u4fdd\u53f8') },\n                { icon: '\u2713', title: text('Visa Ready', '\u7b7e\u8bc1\u5408\u89c4'), description: text('OSHC options structured for Subclass 500 requirements.', '\u56f4\u7ed5 Subclass 500 \u8981\u6c42\u63d0\u4f9b OSHC\u3002'), chip: 'DHA \/ 8501' },\n                { icon: '\u260f', title: text('Fast Support', '\u5feb\u901f\u652f\u6301'), description: text('WeChat and email assistance when you need it.', '\u9700\u8981\u65f6\u53ef\u901a\u8fc7\u5fae\u4fe1\u548c\u90ae\u4ef6\u83b7\u5f97\u534f\u52a9\u3002'), chip: text('Quick reply', '\u5feb\u901f\u56de\u590d') },\n                { icon: '\u2197', title: text('Easy Claims', '\u7406\u8d54\u66f4\u7b80\u5355'), description: text('Clear provider documents and claim guidance.', '\u63d0\u4f9b\u6e05\u6670\u7684\u4fdd\u53f8\u6587\u4ef6\u548c\u7406\u8d54\u6307\u5f15\u3002'), chip: text('Claim help', '\u7406\u8d54\u534f\u52a9') }\n            ]);\n            const testimonials = computed(() => [\n                { name: 'Yuxin', school: 'ANU', text: text('I saved money and understood every plan difference before buying.', '\u8d2d\u4e70\u524d\u65e2\u7701\u4e86\u94b1\uff0c\u4e5f\u6e05\u695a\u4e86\u89e3\u4e86\u6bcf\u4e2a\u8ba1\u5212\u7684\u533a\u522b\u3002') },\n                { name: 'James', school: 'USYD', text: text('The comparison was clear and the support response was professional.', '\u5bf9\u6bd4\u5f88\u6e05\u6670\uff0c\u5ba2\u670d\u56de\u590d\u4e5f\u5f88\u4e13\u4e1a\u3002') },\n                { name: 'Sara', school: 'UQ', text: text('I found a suitable policy quickly without visiting multiple provider sites.', '\u65e0\u9700\u9010\u4e2a\u8bbf\u95ee\u4fdd\u53f8\u7f51\u7ad9\uff0c\u5f88\u5feb\u5c31\u627e\u5230\u4e86\u5408\u9002\u7684\u4fdd\u5355\u3002') }\n            ]);\n\n            const comparisonRows = computed(() => {\n                const allTrue = Object.fromEntries(Object.values(providerIds).map(id => [id, true]));\n                const allMbs = Object.fromEntries(Object.values(providerIds).map(id => [id, text('100% of MBS', 'MBS \u7684 100%')]));\n                const publicAndAgreement = text('Public & agreement only', '\u4ec5\u9650\u516c\u7acb\u533b\u9662\u53ca\u534f\u8bae\u533b\u9662');\n                const allHospitals = text('All hospitals', '\u6240\u6709\u533b\u9662');\n                const allianzObstetricsNote = text('If the duration of your policy is 2 years or more, there will be no waiting periods for Pregnancy and birth, and pre-existing conditions relating to Miscarriage and termination of pregnancy. Policy duration means the total length of Overseas Student Health Cover purchased under your policy, based on your student visa period.', '\u82e5\u60a8\u7684\u4fdd\u5355\u6709\u6548\u671f\u4e3a2\u5e74\u6216\u66f4\u957f\u65f6\u95f4\uff0c\u5219\u9488\u5bf9\u598a\u5a20\u5206\u5a29\u3001\u4e0e\u6d41\u4ea7\u53ca\u7ec8\u6b62\u598a\u5a20\u76f8\u5173\u7684\u65e2\u5f80\u75c7\u5747\u4e0d\u8bbe\u7b49\u5f85\u671f\u3002\u4fdd\u5355\u6709\u6548\u671f\u6307\u6839\u636e\u60a8\u7684\u5b66\u751f\u7b7e\u8bc1\u671f\u9650\uff0c\u6309\u672c\u4fdd\u5355\u8d2d\u4e70\u7684\u6d77\u5916\u5b66\u751f\u5065\u5eb7\u4fdd\u9669\u603b\u65f6\u957f\u3002');\n                const allianzObstetrics = `${text('0 months', '0 \u4e2a\u6708')} <span class=\"hc-info-tooltip\" tabindex=\"0\" role=\"note\" aria-label=\"${allianzObstetricsNote}\" data-tooltip=\"${allianzObstetricsNote}\">?<\/span>`;\n                return [\n                    { section: text('Visa Compliance', '\u7b7e\u8bc1\u5408\u89c4') },\n                    { label: text('Meets government requirements', '\u7b26\u5408\u653f\u5e9c\u8981\u6c42'), values: allTrue },\n                    { label: text('Apply directly on this website', '\u53ef\u76f4\u63a5\u5728\u672c\u7f51\u7ad9\u7533\u8bf7'), values: allTrue },\n                    { section: text('In Hospital Treatment', '\u4f4f\u9662\u6cbb\u7597') },\n                    { label: text('Accommodation', '\u4f4f\u9662\u4f4f\u5bbf'), values: allTrue },\n                    { label: text('Accident and Emergency Services', '\u6025\u8bca\u670d\u52a1'), values: { [providerIds.nib]: publicAndAgreement, [providerIds.allianz_care]: publicAndAgreement, [providerIds.bupa]: publicAndAgreement, [providerIds.medibank]: allHospitals, [providerIds.nib_student_care]: allHospitals } },\n                    { label: text('Doctor Services', '\u533b\u751f\u670d\u52a1'), values: allMbs },\n                    { section: text('Out of Hospital Treatment', '\u975e\u4f4f\u9662\u6cbb\u7597') },\n                    { label: text('Standard GP Consultation', '\u666e\u901a GP \u770b\u8bca'), values: allMbs },\n                    { label: text('Telehealth', '\u8fdc\u7a0b\u533b\u7597'), values: allMbs },\n                    { label: text('Specialists', '\u4e13\u79d1\u533b\u751f'), values: { [providerIds.nib]: text('85% of MBS', 'MBS \u7684 85%'), [providerIds.allianz_care]: text('85% of MBS', 'MBS \u7684 85%'), [providerIds.bupa]: text('100% of MBS', 'MBS \u7684 100%'), [providerIds.medibank]: text('85% of MBS', 'MBS \u7684 85%'), [providerIds.nib_student_care]: text('100% of MBS', 'MBS \u7684 100%') } },\n                    { section: text('Other', '\u5176\u4ed6') },\n                    { label: text('Emergency ambulance services', '\u7d27\u6025\u6551\u62a4\u8f66\u670d\u52a1'), values: allTrue },\n                    { label: text('Prescription medicines', '\u5904\u65b9\u836f'), values: { [providerIds.nib]: text('$50 item \/ $25 co-pay', '\u6bcf\u9879 $50 \/ \u81ea\u4ed8 $25'), [providerIds.allianz_care]: text('$50 item \/ $25 co-pay', '\u6bcf\u9879 $50 \/ \u81ea\u4ed8 $25'), [providerIds.bupa]: text('$50 item \/ $25 co-pay', '\u6bcf\u9879 $50 \/ \u81ea\u4ed8 $25'), [providerIds.medibank]: text('$70 item \/ $30 co-pay', '\u6bcf\u9879 $70 \/ \u81ea\u4ed8 $30'), [providerIds.nib_student_care]: text('100% back after co-payment', '\u5171\u540c\u652f\u4ed8\u540e 100% \u62a5\u9500') } },\n                    { section: text('Waiting Periods', '\u7b49\u5f85\u671f') },\n                    { label: text('Pre-existing Psychiatric', '\u65e2\u5f80\u7cbe\u795e\u5065\u5eb7\u76f8\u5173\u6cbb\u7597'), values: { [providerIds.nib]: text('2 months', '2 \u4e2a\u6708'), [providerIds.allianz_care]: text('0 months', '0 \u4e2a\u6708'), [providerIds.bupa]: text('2 months (waived)', '2 \u4e2a\u6708\uff08\u5df2\u8c41\u514d\uff09'), [providerIds.medibank]: text('0 months', '0 \u4e2a\u6708'), [providerIds.nib_student_care]: text('No waiting', '\u65e0\u7b49\u5f85\u671f') } },\n                    { label: text('Pre-existing Conditions', '\u65e2\u5f80\u75be\u75c5'), values: Object.fromEntries(Object.values(providerIds).map(id => [id, text('12 months', '12 \u4e2a\u6708')])) },\n                    { label: text('Obstetrics', '\u4ea7\u79d1'), values: { [providerIds.nib]: text('12 months', '12 \u4e2a\u6708'), [providerIds.allianz_care]: allianzObstetrics, [providerIds.bupa]: text('12 months', '12 \u4e2a\u6708'), [providerIds.medibank]: text('12 months', '12 \u4e2a\u6708'), [providerIds.nib_student_care]: text('No waiting', '\u65e0\u7b49\u5f85\u671f') } },\n                    { section: text('Extra Features', '\u989d\u5916\u529f\u80fd') },\n                    { label: text('Support Services', '\u652f\u6301\u670d\u52a1'), values: { [providerIds.nib]: text('24-hr health support line', '24 \u5c0f\u65f6\u5065\u5eb7\u652f\u6301\u70ed\u7ebf'), [providerIds.allianz_care]: text('24-hr in-person safety support', '24 \u5c0f\u65f6\u7ebf\u4e0b\u5b89\u5168\u652f\u6301'), [providerIds.bupa]: text('24-hr student health support line', '24 \u5c0f\u65f6\u5b66\u751f\u5065\u5eb7\u652f\u6301\u70ed\u7ebf'), [providerIds.medibank]: text('24-hr health & emergency line', '24 \u5c0f\u65f6\u5065\u5eb7\u53ca\u7d27\u6025\u652f\u6301\u70ed\u7ebf'), [providerIds.nib_student_care]: text('24-hr health & emergency line', '24 \u5c0f\u65f6\u5065\u5eb7\u53ca\u7d27\u6025\u652f\u6301\u70ed\u7ebf') } },\n                    { label: text('Document', '\u6587\u4ef6'), document: true }\n                ];\n            });\n            const comparisonValue = (row, id) => row.values && Object.prototype.hasOwnProperty.call(row.values, id) ? row.values[id] : '\u2014';\n\n            const getClientId = () => {\n                const cookie = document.cookie.split(';').find(item => item.trim().startsWith('_ga='));\n                if (!cookie) return null;\n                const parts = cookie.split('.');\n                return parts.length >= 4 ? `${parts[2]}.${parts[3]}` : null;\n            };\n            const getCookieValue = name => {\n                const cookie = document.cookie.split(';').map(item => item.trim()).find(item => item.startsWith(`${name}=`));\n                return cookie ? decodeURIComponent(cookie.slice(name.length + 1)) : null;\n            };\n            const getAffId = () => getCookieValue('affiliate_id')\n                || urlParams.get('affiliate_id')\n                || urlParams.get('agent_id')\n                || urlParams.get('reff')\n                || localStorage.getItem('prefilled_referral_code')\n                || null;\n            const trackSearch = () => api.post('https:\/\/agent.goglobalsafe.com\/api\/v1\/insurance\/baoxian\/searchPlan', {\n                client_id: getClientId(), type: 'OSHC', remarks: `${startDate.value}-${endDate.value}`, aff: getAffId()\n            }, { headers: apiHeaders }).catch(() => {});\n            const trackView = () => api.post('https:\/\/agent.goglobalsafe.com\/api\/v1\/insurance\/baoxian\/viewPlan', {\n                client_id: getClientId(), type: 'OSHC', aff: getAffId()\n            }, { headers: apiHeaders }).catch(() => {});\n\n            async function fetchQuotes() {\n                if (!startDate.value || !endDate.value || endDate.value <= startDate.value) {\n                    quoteError.value = text('The end date must be after the start date.', '\u7ed3\u675f\u65e5\u671f\u5fc5\u987b\u665a\u4e8e\u5f00\u59cb\u65e5\u671f\u3002');\n                    return;\n                }\n                loading.value = true;\n                quoteError.value = '';\n                try {\n                    const response = await api.post('https:\/\/agent.goglobalsafe.com\/api\/v1\/h5\/oshc\/defaultMini', {\n                        adults: adults.value,\n                        children: children.value,\n                        start: startDate.value,\n                        end: endDate.value\n                    });\n                    const quotes = Array.isArray(response.data && response.data.data)\n                        ? response.data.data.filter(item => item.id !== providerIds.ahm)\n                        : [];\n                    const visibleQuotes = sharedProviderIds.size ? quotes.filter(item => sharedProviderIds.has(item.id)) : quotes;\n                    insurances.value = visibleQuotes\n                        .slice()\n                        .sort((a, b) => planOrder.indexOf(a.id) - planOrder.indexOf(b.id));\n                    expandedPlans.value = [];\n                    trackSearch();\n                } catch (error) {\n                    insurances.value = [];\n                    quoteError.value = text('The quote service is temporarily unavailable. Please try again.', '\u62a5\u4ef7\u670d\u52a1\u6682\u65f6\u4e0d\u53ef\u7528\uff0c\u8bf7\u91cd\u8bd5\u3002');\n                    console.error('OSHC quote error', error);\n                } finally {\n                    loading.value = false;\n                }\n            }\n\n            const togglePlan = id => {\n                const isMobile = window.matchMedia('(max-width: 560px)').matches;\n                if (isMobile) {\n                    expandedPlans.value = expandedPlans.value.includes(id)\n                        ? expandedPlans.value.filter(value => value !== id)\n                        : [...expandedPlans.value, id];\n                    return;\n                }\n                const allPlanIds = insurances.value.map(insurance => insurance.id);\n                const shouldOpen = allPlanIds.some(planId => !expandedPlans.value.includes(planId));\n                expandedPlans.value = shouldOpen ? allPlanIds : [];\n            };\n            const openComparison = async () => {\n                comparisonOpen.value = true;\n                await nextTick();\n                if (comparisonSection.value) comparisonSection.value.scrollIntoView({ behavior: 'smooth', block: 'start' });\n            };\n\n            const navigateToBuyPage = () => {\n                const queryParams = new URLSearchParams({\n                    amount: selectedInsurance.amount || '', img: selectedInsurance.img || '', adults: selectedInsurance.adults || '', children: selectedInsurance.children || '',\n                    startDate: selectedInsurance.startDate || '', endDate: selectedInsurance.endDate || '', email: selectedInsurance.email || '', self: selectedInsurance.self || ''\n                });\n                preservedSourceParams.forEach((value, key) => queryParams.set(key, value));\n                window.location.href = `\/vue-buy?${queryParams.toString()}`;\n            };\n            const selectPlan = insurance => {\n                selectedInsurance.amount = insurance.amount;\n                selectedInsurance.img = insurance.img && insurance.img.url ? insurance.img.url : '';\n                selectedInsurance.adults = adults.value;\n                selectedInsurance.children = children.value;\n                selectedInsurance.startDate = startDate.value;\n                selectedInsurance.endDate = endDate.value;\n                selectedInsurance.self = insurance.links && insurance.links.self\n                    ? insurance.links.self\n                    : `${formApi}${insurance.id}\/quote`;\n                if (typeof window.gtag === 'function') window.gtag('event', 'OSHC-select-plan', {\n                    event_category: 'engagement', event_label: 'Plan Selected', value: 1, plan_name: insurance.id\n                });\n                if (localStorage.getItem('student_token')) navigateToBuyPage();\n                else loginModal.value = true;\n            };\n            const closeLogin = () => {\n                loginModal.value = false;\n                loginNeedsPassword.value = false;\n                loginLoading.value = false;\n                loginError.value = '';\n                loginForm.email = '';\n                loginForm.password = '';\n            };\n            const submitLogin = async () => {\n                loginLoading.value = true;\n                loginError.value = '';\n                selectedInsurance.email = loginForm.email;\n                try {\n                    if (!loginNeedsPassword.value) {\n                        const response = await api.post(apiEmailExist, { email: loginForm.email }, { headers: apiHeaders });\n                        if (response.data && response.data.data && response.data.data.exists) loginNeedsPassword.value = true;\n                        else {\n                            localStorage.setItem('student_email', loginForm.email);\n                            navigateToBuyPage();\n                        }\n                    } else {\n                        const response = await api.post(apiLogin, { email: loginForm.email, password: loginForm.password }, { headers: apiHeaders });\n                        const token = response.data && response.data.data && response.data.data.token;\n                        if (!token) throw new Error('Missing login token');\n                        localStorage.setItem('student_token', token);\n                        navigateToBuyPage();\n                    }\n                } catch (error) {\n                    loginError.value = (error.response && error.response.data && error.response.data.message) || text('Unable to continue. Check your details and try again.', '\u65e0\u6cd5\u7ee7\u7eed\uff0c\u8bf7\u68c0\u67e5\u4fe1\u606f\u540e\u91cd\u8bd5\u3002');\n                } finally {\n                    loginLoading.value = false;\n                }\n            };\n            const calculatorOpen = ref(false);\n            const calculator = reactive({ courseStart: '', courseEnd: '', arrivalDays: 30, error: '', result: null });\n            const openCalculator = () => { calculatorOpen.value = true; document.body.style.overflow = 'hidden'; };\n            const closeCalculator = () => { calculatorOpen.value = false; document.body.style.overflow = ''; };\n            const addDays = (date, count) => { const copyDate = new Date(date); copyDate.setDate(copyDate.getDate() + count); return copyDate; };\n            const addMonths = (date, count) => { const copyDate = new Date(date); copyDate.setMonth(copyDate.getMonth() + count); return copyDate; };\n            const calculateDates = () => {\n                calculator.error = '';\n                calculator.result = null;\n                const courseStart = new Date(`${calculator.courseStart}T00:00:00`);\n                const courseEnd = new Date(`${calculator.courseEnd}T00:00:00`);\n                if (!calculator.courseStart || !calculator.courseEnd || Number.isNaN(courseStart.getTime()) || Number.isNaN(courseEnd.getTime()) || courseEnd <= courseStart) {\n                    calculator.error = text('Course end date must be after the course start date.', '\u8bfe\u7a0b\u7ed3\u675f\u65e5\u671f\u5fc5\u987b\u665a\u4e8e\u8bfe\u7a0b\u5f00\u59cb\u65e5\u671f\u3002');\n                    return;\n                }\n                const earliest = addDays(new Date(), 1);\n                earliest.setHours(0, 0, 0, 0);\n                let policyStart = addDays(courseStart, -calculator.arrivalDays);\n                if (policyStart < earliest) policyStart = earliest;\n                const durationMonths = (courseEnd.getFullYear() - courseStart.getFullYear()) * 12 + courseEnd.getMonth() - courseStart.getMonth();\n                let policyEnd;\n                let note;\n                if (durationMonths <= 10) {\n                    policyEnd = addMonths(courseEnd, 1);\n                    note = text('The course is 10 months or less, so one month is added after the course end date.', '\u8bfe\u7a0b\u4e0d\u8d85\u8fc7 10 \u4e2a\u6708\uff0c\u56e0\u6b64\u5728\u8bfe\u7a0b\u7ed3\u675f\u65e5\u671f\u540e\u589e\u52a0 1 \u4e2a\u6708\u3002');\n                } else if (courseEnd.getMonth() <= 9) {\n                    policyEnd = addMonths(courseEnd, 2);\n                    note = text('The course is longer than 10 months and finishes from January to October, so two months are added.', '\u8bfe\u7a0b\u8d85\u8fc7 10 \u4e2a\u6708\u4e14\u5728 1\u201310 \u6708\u7ed3\u675f\uff0c\u56e0\u6b64\u589e\u52a0 2 \u4e2a\u6708\u3002');\n                } else {\n                    policyEnd = new Date(courseEnd.getFullYear() + 1, 2, 15);\n                    note = text('The course is longer than 10 months and finishes in November or December, so cover extends to 15 March.', '\u8bfe\u7a0b\u8d85\u8fc7 10 \u4e2a\u6708\u4e14\u5728 11\u201312 \u6708\u7ed3\u675f\uff0c\u56e0\u6b64\u4fdd\u969c\u5ef6\u957f\u81f3\u6b21\u5e74 3 \u6708 15 \u65e5\u3002');\n                }\n                calculator.result = { start: policyStart, end: policyEnd, note };\n            };\n            const confirmCalculatedDates = () => {\n                if (!calculator.result) return;\n                startDate.value = toInputDate(calculator.result.start);\n                endDate.value = toInputDate(calculator.result.end);\n                closeCalculator();\n                fetchQuotes();\n            };\n            const formatLongDate = date => date.toLocaleDateString(isZh ? 'zh-CN' : 'en-AU', { day: 'numeric', month: 'long', year: 'numeric' });\n\n            onMounted(() => {\n                fetchQuotes();\n                trackView();\n            });\n\n            return {\n                copy, today, adults, children, startDate, endDate, coverageOptions, coverageSelection, insurances, loading, quoteError,\n                planMeta, oldPrice, priceNote, documentUrl, openDocument, expandedPlans, togglePlan, comparisonOpen, comparisonSection, openComparison,\n                coverItems, reasonItems, testimonials, comparisonRows, comparisonValue, fetchQuotes, selectPlan,\n                calculatorOpen, calculator, openCalculator, closeCalculator, calculateDates, confirmCalculatedDates, formatLongDate,\n                loginModal, loginNeedsPassword, loginLoading, loginError, loginForm, closeLogin, submitLogin\n            };\n        }\n    }).mount('#ggs-oshc-app');\n})();\n<\/script>\n<\/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<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-global-header-display":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"enabled","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","footnotes":""},"class_list":["post-28058","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.6 (Yoast SEO v26.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>OSHC Student Health Insurance Australia | Overseas Health Cover<\/title>\n<meta name=\"description\" content=\"Overseas Student Health Cover (OSHC) in Australia. How to apply, and why it&#039;s essential for international students studying Down Under.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.goglobalsafe.com\/zh\/oshc\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Australia student health insurance OSHC\" \/>\n<meta property=\"og:description\" content=\"Overseas Student Health Cover (OSHC) in Australia. How to apply, and why it&#039;s essential for international students studying Down Under.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.goglobalsafe.com\/zh\/oshc\/\" \/>\n<meta property=\"og:site_name\" content=\"GoGlobalsafe-\u7559\u5b66\u751f\u4fdd\u9669\u4e00\u7ad9\u5f0f\u89e3\u51b3\u65b9\u6848\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-29T07:20:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2023\/04\/LOGO1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"1000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.goglobalsafe.com\/oshc\/\",\"url\":\"https:\/\/www.goglobalsafe.com\/oshc\/\",\"name\":\"OSHC Student Health Insurance Australia | Overseas Health Cover\",\"isPartOf\":{\"@id\":\"https:\/\/www.goglobalsafe.com\/#website\"},\"datePublished\":\"2023-10-25T15:09:05+00:00\",\"dateModified\":\"2026-07-29T07:20:27+00:00\",\"description\":\"Overseas Student Health Cover (OSHC) in Australia. How to apply, and why it's essential for international students studying Down Under.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.goglobalsafe.com\/oshc\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.goglobalsafe.com\/oshc\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.goglobalsafe.com\/oshc\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.goglobalsafe.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Australia student health insurance OSHC\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.goglobalsafe.com\/#website\",\"url\":\"https:\/\/www.goglobalsafe.com\/\",\"name\":\"GoGlobalSafe Student Insurance\",\"description\":\"Your Health, Our Priority\",\"publisher\":{\"@id\":\"https:\/\/www.goglobalsafe.com\/#organization\"},\"alternateName\":\"GoGlobalSafe international student insurance\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.goglobalsafe.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.goglobalsafe.com\/#organization\",\"name\":\"Golobal student consulting limited\",\"alternateName\":\"GoGlobalSafe\",\"url\":\"https:\/\/www.goglobalsafe.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.goglobalsafe.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2023\/04\/LOGO3.png\",\"contentUrl\":\"https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2023\/04\/LOGO3.png\",\"width\":500,\"height\":140,\"caption\":\"Golobal student consulting limited\"},\"image\":{\"@id\":\"https:\/\/www.goglobalsafe.com\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"OSHC Student Health Insurance Australia | Overseas Health Cover","description":"Overseas Student Health Cover (OSHC) in Australia. How to apply, and why it's essential for international students studying Down Under.","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:\/\/www.goglobalsafe.com\/zh\/oshc\/","og_locale":"zh_CN","og_type":"article","og_title":"Australia student health insurance OSHC","og_description":"Overseas Student Health Cover (OSHC) in Australia. How to apply, and why it's essential for international students studying Down Under.","og_url":"https:\/\/www.goglobalsafe.com\/zh\/oshc\/","og_site_name":"GoGlobalsafe-\u7559\u5b66\u751f\u4fdd\u9669\u4e00\u7ad9\u5f0f\u89e3\u51b3\u65b9\u6848","article_modified_time":"2026-07-29T07:20:27+00:00","og_image":[{"width":1000,"height":1000,"url":"https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2023\/04\/LOGO1.png","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.goglobalsafe.com\/oshc\/","url":"https:\/\/www.goglobalsafe.com\/oshc\/","name":"OSHC Student Health Insurance Australia | Overseas Health Cover","isPartOf":{"@id":"https:\/\/www.goglobalsafe.com\/#website"},"datePublished":"2023-10-25T15:09:05+00:00","dateModified":"2026-07-29T07:20:27+00:00","description":"Overseas Student Health Cover (OSHC) in Australia. How to apply, and why it's essential for international students studying Down Under.","breadcrumb":{"@id":"https:\/\/www.goglobalsafe.com\/oshc\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.goglobalsafe.com\/oshc\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.goglobalsafe.com\/oshc\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.goglobalsafe.com\/"},{"@type":"ListItem","position":2,"name":"Australia student health insurance OSHC"}]},{"@type":"WebSite","@id":"https:\/\/www.goglobalsafe.com\/#website","url":"https:\/\/www.goglobalsafe.com\/","name":"GoGlobalSafe \u5b66\u751f\u4fdd\u9669","description":"\u60a8\u7684\u5065\u5eb7\uff0c\u6211\u4eec\u7684\u9996\u8981\u4efb\u52a1","publisher":{"@id":"https:\/\/www.goglobalsafe.com\/#organization"},"alternateName":"GoGlobalSafe international student insurance","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.goglobalsafe.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":"Organization","@id":"https:\/\/www.goglobalsafe.com\/#organization","name":"\u73af\u7403\u5b66\u751f\u54a8\u8be2\u6709\u9650\u516c\u53f8","alternateName":"GoGlobalSafe","url":"https:\/\/www.goglobalsafe.com\/","logo":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.goglobalsafe.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2023\/04\/LOGO3.png","contentUrl":"https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2023\/04\/LOGO3.png","width":500,"height":140,"caption":"Golobal student consulting limited"},"image":{"@id":"https:\/\/www.goglobalsafe.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/pages\/28058","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/comments?post=28058"}],"version-history":[{"count":257,"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/pages\/28058\/revisions"}],"predecessor-version":[{"id":38032,"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/pages\/28058\/revisions\/38032"}],"wp:attachment":[{"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/media?parent=28058"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}