{"id":8446,"date":"2025-08-27T11:00:22","date_gmt":"2025-08-27T03:00:22","guid":{"rendered":"https:\/\/medicine.nus.edu.sg\/bch\/?page_id=8446"},"modified":"2025-08-27T11:07:57","modified_gmt":"2025-08-27T03:07:57","slug":"msc-phm","status":"publish","type":"page","link":"https:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/","title":{"rendered":"MSc Precision Health and Medicine Homepage"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"8446\" class=\"elementor elementor-8446\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-07e718d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"07e718d\" 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-7a8cad2\" data-id=\"7a8cad2\" 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-c94b6d0 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"c94b6d0\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- Auto-Scaling Full-Screen iframe for WordPress HTML Block -->\r\n<!-- Automatically scales content based on screen size -->\r\n\r\n<style>\r\n\/* Custom styles for fullscreen iframe with auto-scaling *\/\r\n.fullscreen-iframe-wrapper {\r\n    position: fixed !important;\r\n    top: 0 !important;\r\n    left: 0 !important;\r\n    width: 100vw !important;\r\n    height: 100vh !important;\r\n    z-index: 999999 !important;\r\n    background: white;\r\n    margin: 0 !important;\r\n    padding: 0 !important;\r\n    overflow: hidden !important;\r\n}\r\n\r\n.fullscreen-iframe-wrapper iframe {\r\n    position: absolute !important;\r\n    top: 0 !important;\r\n    left: 0 !important;\r\n    border: none !important;\r\n    margin: 0 !important;\r\n    padding: 0 !important;\r\n    overflow: auto !important;\r\n    transform-origin: 0 0 !important;\r\n    -webkit-transform-origin: 0 0 !important;\r\n}\r\n\r\n\/* Hide WordPress admin bar if present *\/\r\nbody.admin-bar .fullscreen-iframe-wrapper {\r\n    top: 0 !important;\r\n}\r\n\r\n\/* Ensure high DPI rendering *\/\r\n@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\r\n    .fullscreen-iframe-wrapper iframe {\r\n        image-rendering: -webkit-optimize-contrast;\r\n        image-rendering: crisp-edges;\r\n    }\r\n}\r\n\r\n\/* Prevent body scroll *\/\r\nbody.iframe-fullscreen-active {\r\n    overflow: hidden !important;\r\n}\r\n<\/style>\r\n\r\n<div class=\"fullscreen-iframe-wrapper\" id=\"scalingIframeWrapper\">\r\n    <iframe \r\n        id=\"scalingIframe\"\r\n        src=\"https:\/\/medicine.nus.edu.sg\/mscphm\/website\/homepage.html\"\r\n        frameborder=\"0\"\r\n        scrolling=\"auto\"\r\n        allowfullscreen=\"true\"\r\n        webkitallowfullscreen=\"true\"\r\n        mozallowfullscreen=\"true\"\r\n        allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\r\n        loading=\"eager\"\r\n        importance=\"high\"\r\n    ><\/iframe>\r\n<\/div>\r\n\r\n<script>\r\n(function() {\r\n    \/\/ Configuration for auto-scaling\r\n    const config = {\r\n        \/\/ Base resolution the site was designed for\r\n        baseWidth: 1920,\r\n        baseHeight: 1080,\r\n        \r\n        \/\/ Scaling factors for different screen sizes\r\n        scaling: {\r\n            small: { maxWidth: 1366, scale: 1.0 },      \/\/ Small screens: no scaling\r\n            medium: { maxWidth: 1920, scale: 1.0 },     \/\/ HD screens: 120% (like Ctrl+ once)\r\n            large: { maxWidth: 2560, scale: 1.2 },      \/\/ 2K screens: 150% (like Ctrl+ 3 times)\r\n            xlarge: { maxWidth: 3840, scale: 1.5 },     \/\/ 4K screens: 180% (like Ctrl+ 4 times)\r\n            xxlarge: { maxWidth: Infinity, scale: 1.8 } \/\/ 5K+ screens: 200% (like Ctrl+ 5 times)\r\n        },\r\n        \r\n        \/\/ Minimum scale for mobile devices\r\n        mobileMinScale: 1.0,\r\n        \r\n        \/\/ Enable smooth transitions\r\n        enableTransitions: true\r\n    };\r\n    \r\n    function getOptimalScale() {\r\n        const screenWidth = window.screen.width;\r\n        const screenHeight = window.screen.height;\r\n        const viewportWidth = window.innerWidth;\r\n        const viewportHeight = window.innerHeight;\r\n        \r\n        \/\/ Detect if mobile device\r\n        const isMobile = \/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\/i.test(navigator.userAgent) \r\n                        || viewportWidth < 768;\r\n        \r\n        if (isMobile) {\r\n            \/\/ For mobile, calculate scale to fit viewport\r\n            const scaleX = viewportWidth \/ config.baseWidth;\r\n            const scaleY = viewportHeight \/ config.baseHeight;\r\n            return Math.max(Math.min(scaleX, scaleY), config.mobileMinScale);\r\n        }\r\n        \r\n        \/\/ For desktop, use predefined scaling based on screen size\r\n        let scale = 1.0;\r\n        \r\n        \/\/ Determine scale based on screen width\r\n        for (const [key, value] of Object.entries(config.scaling)) {\r\n            if (screenWidth <= value.maxWidth) {\r\n                scale = value.scale;\r\n                break;\r\n            }\r\n        }\r\n        \r\n        \/\/ Additional adjustment based on pixel density\r\n        const pixelRatio = window.devicePixelRatio || 1;\r\n        if (pixelRatio > 1.5 && screenWidth > 2560) {\r\n            scale *= 1.1; \/\/ Extra 10% for high DPI large screens\r\n        }\r\n        \r\n        \/\/ Adjust for viewport vs screen size (windowed browser)\r\n        if (viewportWidth < screenWidth * 0.8) {\r\n            scale *= (viewportWidth \/ screenWidth);\r\n        }\r\n        \r\n        return scale;\r\n    }\r\n    \r\n    function applyScaling() {\r\n        const iframe = document.getElementById('scalingIframe');\r\n        const wrapper = document.getElementById('scalingIframeWrapper');\r\n        \r\n        if (!iframe || !wrapper) return;\r\n        \r\n        const scale = getOptimalScale();\r\n        \r\n        \/\/ Calculate dimensions\r\n        const scaledWidth = window.innerWidth \/ scale;\r\n        const scaledHeight = window.innerHeight \/ scale;\r\n        \r\n        \/\/ Apply scaling transformation\r\n        iframe.style.width = scaledWidth + 'px';\r\n        iframe.style.height = scaledHeight + 'px';\r\n        iframe.style.transform = `scale(${scale})`;\r\n        iframe.style.webkitTransform = `scale(${scale})`;\r\n        iframe.style.mozTransform = `scale(${scale})`;\r\n        iframe.style.msTransform = `scale(${scale})`;\r\n        iframe.style.oTransform = `scale(${scale})`;\r\n        \r\n        \/\/ Add transition for smooth scaling\r\n        if (config.enableTransitions) {\r\n            iframe.style.transition = 'transform 0.3s ease';\r\n            iframe.style.webkitTransition = '-webkit-transform 0.3s ease';\r\n        }\r\n        \r\n        \/\/ Log scaling info (can be removed in production)\r\n        console.log('Auto-scaling applied:', {\r\n            screenSize: `${window.screen.width}x${window.screen.height}`,\r\n            viewportSize: `${window.innerWidth}x${window.innerHeight}`,\r\n            scale: scale.toFixed(2),\r\n            equivalent: `Ctrl+ pressed ${Math.round((scale - 1) * 5)} times`\r\n        });\r\n    }\r\n    \r\n    \/\/ Initialize scaling\r\n    function initialize() {\r\n        \/\/ Add body class to prevent scrolling\r\n        document.body.classList.add('iframe-fullscreen-active');\r\n        \r\n        \/\/ Hide WordPress admin bar if present\r\n        if (document.body.classList.contains('admin-bar')) {\r\n            const adminBar = document.getElementById('wpadminbar');\r\n            if (adminBar) {\r\n                adminBar.style.display = 'none';\r\n            }\r\n        }\r\n        \r\n        \/\/ Apply initial scaling\r\n        applyScaling();\r\n        \r\n        \/\/ Ensure iframe content is loaded before final adjustment\r\n        const iframe = document.getElementById('scalingIframe');\r\n        iframe.addEventListener('load', function() {\r\n            setTimeout(applyScaling, 100); \/\/ Small delay to ensure content is rendered\r\n        });\r\n    }\r\n    \r\n    \/\/ Handle resize events\r\n    let resizeTimer;\r\n    window.addEventListener('resize', function() {\r\n        clearTimeout(resizeTimer);\r\n        resizeTimer = setTimeout(applyScaling, 250); \/\/ Debounce resize events\r\n    });\r\n    \r\n    \/\/ Handle orientation changes on mobile\r\n    window.addEventListener('orientationchange', function() {\r\n        setTimeout(applyScaling, 300);\r\n    });\r\n    \r\n    \/\/ Initialize on different load events to ensure compatibility\r\n    if (document.readyState === 'loading') {\r\n        document.addEventListener('DOMContentLoaded', initialize);\r\n    } else {\r\n        initialize();\r\n    }\r\n    \r\n    \/\/ Also initialize on window load as fallback\r\n    window.addEventListener('load', initialize);\r\n    \r\n    \/\/ Manual override function (optional - for testing)\r\n    window.setIframeScale = function(scale) {\r\n        const iframe = document.getElementById('scalingIframe');\r\n        if (iframe) {\r\n            const scaledWidth = window.innerWidth \/ scale;\r\n            const scaledHeight = window.innerHeight \/ scale;\r\n            iframe.style.width = scaledWidth + 'px';\r\n            iframe.style.height = scaledHeight + 'px';\r\n            iframe.style.transform = `scale(${scale})`;\r\n            console.log('Manual scale applied:', scale);\r\n        }\r\n    };\r\n})();\r\n<\/script>\r\n\r\n<!-- Optional: Control Panel for Manual Adjustment -->\r\n<!-- Uncomment this section if you want manual controls -->\r\n<!--\r\n<div style=\"position: fixed; bottom: 20px; right: 20px; z-index: 1000000; background: rgba(0,0,0,0.8); padding: 10px; border-radius: 5px;\">\r\n    <button onclick=\"setIframeScale(1.0)\" style=\"margin: 2px; padding: 5px 10px; cursor: pointer;\">100%<\/button>\r\n    <button onclick=\"setIframeScale(1.25)\" style=\"margin: 2px; padding: 5px 10px; cursor: pointer;\">125%<\/button>\r\n    <button onclick=\"setIframeScale(1.5)\" style=\"margin: 2px; padding: 5px 10px; cursor: pointer;\">150%<\/button>\r\n    <button onclick=\"setIframeScale(1.75)\" style=\"margin: 2px; padding: 5px 10px; cursor: pointer;\">175%<\/button>\r\n    <button onclick=\"setIframeScale(2.0)\" style=\"margin: 2px; padding: 5px 10px; cursor: pointer;\">200%<\/button>\r\n<\/div>\r\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<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d7f0c47 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d7f0c47\" 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-ceeb3c9\" data-id=\"ceeb3c9\" 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-d648810 elementor-widget elementor-widget-html\" data-id=\"d648810\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\r\nwindow.addEventListener('load', function() {\r\n    const container = document.querySelector('.tuition-container');\r\n    if (container) {\r\n        container.style.width = window.innerWidth + 'px';\r\n        container.style.marginLeft = '-' + container.getBoundingClientRect().left + 'px';\r\n    }\r\n});\r\n\r\nwindow.addEventListener('resize', function() {\r\n    const container = document.querySelector('.tuition-container');\r\n    if (container) {\r\n        container.style.width = window.innerWidth + 'px';\r\n        container.style.marginLeft = '-' + container.getBoundingClientRect().left + 'px';\r\n    }\r\n});\r\n<\/script>\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>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":8259,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-8446","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>MSc Precision Health and Medicine Homepage - Department of Biochemistry \u2013 School of Medicine, National University of Singapore<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MSc Precision Health and Medicine Homepage - Department of Biochemistry \u2013 School of Medicine, National University of Singapore\" \/>\n<meta property=\"og:url\" content=\"https:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/\" \/>\n<meta property=\"og:site_name\" content=\"Department of Biochemistry \u2013 School of Medicine, National University of Singapore\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-27T03:07:57+00:00\" \/>\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:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/\",\"url\":\"https:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/\",\"name\":\"MSc Precision Health and Medicine Homepage - Department of Biochemistry \u2013 School of Medicine, National University of Singapore\",\"isPartOf\":{\"@id\":\"https:\/\/medicine.nus.edu.sg\/bch\/#website\"},\"datePublished\":\"2025-08-27T03:00:22+00:00\",\"dateModified\":\"2025-08-27T03:07:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/medicine.nus.edu.sg\/bch\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MSc Precision Health and Medicine Homepage\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/medicine.nus.edu.sg\/bch\/#website\",\"url\":\"https:\/\/medicine.nus.edu.sg\/bch\/\",\"name\":\"Department of Biochemistry \u2013 School of Medicine, National University of Singapore\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/medicine.nus.edu.sg\/bch\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MSc Precision Health and Medicine Homepage - Department of Biochemistry \u2013 School of Medicine, National University of Singapore","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:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/","og_locale":"en_US","og_type":"article","og_title":"MSc Precision Health and Medicine Homepage - Department of Biochemistry \u2013 School of Medicine, National University of Singapore","og_url":"https:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/","og_site_name":"Department of Biochemistry \u2013 School of Medicine, National University of Singapore","article_modified_time":"2025-08-27T03:07:57+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/","url":"https:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/","name":"MSc Precision Health and Medicine Homepage - Department of Biochemistry \u2013 School of Medicine, National University of Singapore","isPartOf":{"@id":"https:\/\/medicine.nus.edu.sg\/bch\/#website"},"datePublished":"2025-08-27T03:00:22+00:00","dateModified":"2025-08-27T03:07:57+00:00","breadcrumb":{"@id":"https:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/medicine.nus.edu.sg\/bch\/msc-phm\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/medicine.nus.edu.sg\/bch\/"},{"@type":"ListItem","position":2,"name":"MSc Precision Health and Medicine Homepage"}]},{"@type":"WebSite","@id":"https:\/\/medicine.nus.edu.sg\/bch\/#website","url":"https:\/\/medicine.nus.edu.sg\/bch\/","name":"Department of Biochemistry \u2013 School of Medicine, National University of Singapore","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/medicine.nus.edu.sg\/bch\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/medicine.nus.edu.sg\/bch\/wp-json\/wp\/v2\/pages\/8446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/medicine.nus.edu.sg\/bch\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/medicine.nus.edu.sg\/bch\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/medicine.nus.edu.sg\/bch\/wp-json\/wp\/v2\/users\/8259"}],"replies":[{"embeddable":true,"href":"https:\/\/medicine.nus.edu.sg\/bch\/wp-json\/wp\/v2\/comments?post=8446"}],"version-history":[{"count":4,"href":"https:\/\/medicine.nus.edu.sg\/bch\/wp-json\/wp\/v2\/pages\/8446\/revisions"}],"predecessor-version":[{"id":8450,"href":"https:\/\/medicine.nus.edu.sg\/bch\/wp-json\/wp\/v2\/pages\/8446\/revisions\/8450"}],"wp:attachment":[{"href":"https:\/\/medicine.nus.edu.sg\/bch\/wp-json\/wp\/v2\/media?parent=8446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}