{"id":2438,"date":"2025-04-08T16:52:01","date_gmt":"2025-04-08T05:52:01","guid":{"rendered":"https:\/\/bornfree.life\/2024\/?p=2438"},"modified":"2026-07-11T13:52:25","modified_gmt":"2026-07-11T02:52:25","slug":"oligoscan-tool","status":"publish","type":"page","link":"https:\/\/bornfree.life\/dev\/oligoscan-tool\/","title":{"rendered":"Oligoscan PDF Processor"},"content":{"rendered":"\n\n\n<div class=\"flex flex-col gap-5 items-center title-container\"><a href=\"https:\/\/bornfree.life\/learn\/oligoscan-tool\/\"><h1 class=\"text-center text-5xl text-blue-title font-semibold\">\n        Oligoscan PDF Processor      <\/h1><\/a>\n\n          <\/div>\n\n    <div class=\"border-t h-px border-default-border w-full\"><br><\/div><p><br><\/p>\n<div class=\"bf-osp-info\" aria-label=\"Oligoscan PDF Processor information\">\n  <p class=\"bf-osp-version\"><span>Version<\/span> <strong>1.6.3<\/strong><\/p>\n\n  <section class=\"bf-osp-disclaimer\" aria-labelledby=\"bf-osp-disclaimer-title\">\n    <span class=\"bf-osp-icon bf-osp-icon--shield\" aria-hidden=\"true\"><\/span>\n    <div>\n      <h2 id=\"bf-osp-disclaimer-title\">Disclaimer<\/h2>\n      <p>This unofficial analysis tool is a &#8220;best effort&#8221; to interpret Oligoscan PDF reports. <strong>Example outputs for <a href=\"https:\/\/bornfree.life\/learn\/wp-content\/uploads\/2026\/02\/Corr_Oligoscan-example-page1-scaled.png\" target=\"_blank\" rel=\"noopener\">[page 1]<\/a> and <a href=\"https:\/\/bornfree.life\/learn\/wp-content\/uploads\/2026\/02\/Corr_Oligoscan-example-page2-scaled.png\" target=\"_blank\" rel=\"noopener\">[page 2]<\/a>.<\/strong><\/p>\n      <p>It can and will continue to evolve over time, and should never be taken as medical advice or a prescription.<\/p>\n    <\/div>\n  <\/section>\n\n  <div class=\"bf-osp-info-grid\">\n    <section class=\"bf-osp-card bf-osp-background\" aria-labelledby=\"bf-osp-background-title\">\n      <header class=\"bf-osp-card-header\">\n        <span class=\"bf-osp-icon bf-osp-icon--report\" aria-hidden=\"true\"><\/span>\n        <h2 id=\"bf-osp-background-title\">Background<\/h2>\n      <\/header>\n\n      <p>Oligoscan provides a highly convenient way to estimate intracellular mineral data. However, there are currently a number of limitations that prevent the data from being used at face value, eg.<\/p>\n\n      <ul class=\"bf-osp-check-list\">\n        <li>Skin calcium and iron markers are not helpful in understanding systemic levels, as 99% of calcium is stored in skeletal tissue and 75% of iron is circulating.<\/li>\n        <li>The standard lower and upper thresholds for indicating severe deficiencies are not sensitive enough.<\/li>\n        <li>The Oligoscan practitioner&#8217;s handbook indicates certain mineral elevations need to be inverted and re-interpreted as &#8220;low&#8221;. My analysis of Oligoscan reports vs data obtained from simultaneous &#8220;white blood cell nutrients&#8221; testing suggests this should apply to a wider array of markers. Further analysis is needed.<\/li>\n        <li>Helpful biochemistry details regarding specific deficiencies are not provided in the standard report.<\/li>\n      <\/ul>\n\n      <details class=\"bf-osp-more\">\n        <summary>Learn more <span aria-hidden=\"true\">&rarr;<\/span><\/summary>\n        <div>\n          <p>In the future, it&#8217;s entirely possible the company behind Oligoscan may update their reports around these and other observations. In the meantime, you can either consult an Oligoscan practitioner to interpret your report, or use the tool below.<\/p>\n        <\/div>\n      <\/details>\n    <\/section>\n\n    <section class=\"bf-osp-card bf-osp-limitations\" aria-labelledby=\"bf-osp-limitations-title\">\n      <header class=\"bf-osp-card-header\">\n        <span class=\"bf-osp-icon bf-osp-icon--warning\" aria-hidden=\"true\"><\/span>\n        <h2 id=\"bf-osp-limitations-title\">Notes &amp; known limitations<\/h2>\n      <\/header>\n\n      <ol class=\"bf-osp-number-list\">\n        <li><strong>(2026-03-20) Now also works with multilingual SO\/Check reports (beta, needs further testing in multiple languages).<\/strong><\/li>\n        <li>Untested on Oligoscan reports generated in languages other than English and French, however <em>should<\/em> support others&#8230;<\/li>\n        <li><strong>This tool works reliably on the ORIGINAL EMAILED PDF results<\/strong> &#8211; photos and scanned images of these reports will trigger an attempt at OCR extraction <em>(experimental)<\/em>, however this method can easily introduce errors, depending on image quality.<\/li>\n        <li>Uploading Oligoscan &#8220;comparison reports&#8221; will not work, however <strong>you can generate comparisons for up to 5 individual reports using this tool, using any combination of original (emailed, not-OCR&#8217;d) and\/or already processed reports (which may also include successfully OCR&#8217;d versions)<\/strong>.<\/li>\n        <li>Output PDF reports have been simplified to show mineral results as deviation% from &#8220;ideal&#8221;. However, if you&#8217;d also like the raw data, it is contained in the optional CSV file.<\/li>\n        <li>As of v1.0.1, mineral test report data deviation% is now aligned to SO\/Check scaling.<\/li>\n        <li><strong>As of v1.6.1, heavy metal report data deviation% is now aligned to SO\/Check scaling. This is automatically detected and accommodated in comparison reports.<\/strong><\/li>\n        <li>Customised branding, images and messages are now available for clinicians. Please use the enquiry form below for more information.<\/li>\n      <\/ol>\n    <\/section>\n  <\/div>\n\n  <aside class=\"bf-osp-privacy\" aria-label=\"Privacy statement\">\n    <span class=\"bf-osp-icon bf-osp-icon--info\" aria-hidden=\"true\"><\/span>\n    <p><strong>Privacy statement:<\/strong> All tasks are performed locally in your web browser. The Oligoscan practitioner&#8217;s contact details on the original report are used to query a database and determine if any visual customisations are to be applied to the generated PDF report. Your personal data is not transmitted, collected or used for any purpose.<\/p>\n  <\/aside>\n<\/div>\n    <div class=\"oligoscan-processor-wrap\">\n        <div class=\"osp-card\">\n            <div id=\"ospDropzone\" class=\"osp-dropzone\" tabindex=\"0\" role=\"button\" aria-label=\"Upload Oligoscan PDF\">\n                <input type=\"file\" id=\"ospFileInput\" accept=\"application\/pdf,.pdf\" aria-label=\"Choose Oligoscan PDF\">\n                <div class=\"osp-drop-inner\">\n                    <div class=\"osp-drop-icon\" aria-hidden=\"true\">\ud83d\udcc4<\/div>\n                    <div class=\"osp-drop-text\"><strong>Drop your Oligoscan PDF<\/strong> or<\/div>\n                    <button type=\"button\" id=\"ospChooseBtn\" class=\"osp-btn osp-btn--primary\">Choose PDF<\/button>\n                    <div id=\"ospFileName\" class=\"osp-file-name\" aria-live=\"polite\"><\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"osp-actions\">\n                <button id=\"ospProcessButton\" class=\"osp-btn\" disabled title=\"Re-process the current file\">Re-process<\/button>\n                <div class=\"osp-actions__spacer\"><\/div>\n                <button id=\"ospDownloadCsvButton\" class=\"osp-btn osp-btn--ghost\" style=\"display:none;\">Download CSV<\/button>\n                <button id=\"ospDownloadPdfButton\" class=\"osp-btn osp-btn--ghost\" style=\"display:none;\">Download PDF<\/button>\n            <\/div>\n            <div class=\"osp-options\" aria-label=\"Options\">\n                <label class=\"osp-option\">\n                    <input type=\"checkbox\" id=\"ospOptRemoveNamesDob\">\n                    <span>Remove all names and DOB<\/span>\n                <\/label>\n                <label class=\"osp-option\" style=\"margin-left:14px;\">\n                    <input type=\"checkbox\" id=\"ospOptComparisonMode\">\n                    <span>Generate comparison from multiple reports (max 5)<\/span>\n                <\/label>\n            <\/div>\n\n            <div id=\"ospStatus\" class=\"osp-status info\" aria-live=\"polite\"><\/div>\n\n            <div id=\"ospLoader\" class=\"osp-loader\" aria-hidden=\"true\" style=\"display:none;\">\n                <span class=\"osp-spinner\" aria-hidden=\"true\"><\/span>\n                <span>Processing\u2026<\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <style>\n        :root {\n            --osp-bg: #0b0f13;\n            --osp-card: #121820;\n            --osp-border: #1e2835;\n            --osp-text: #e8eef5;\n            --osp-muted: #9fb1c7;\n            --osp-primary: #4da3ff;\n            --osp-primary-2: #7bb3ff;\n            --osp-success: #33c38e;\n            --osp-error: #ff6767;\n            --osp-shadow: 0 8px 30px rgba(0,0,0,0.25);\n        }\n        .oligoscan-processor-wrap { color: var(--osp-text); }\n        .osp-card {\n            background: var(--osp-card);\n            border: 1px solid var(--osp-border);\n            border-radius: 14px;\n            padding: 18px;\n            box-shadow: var(--osp-shadow);\n        }\n        .osp-dropzone {\n            position: relative;\n            border: 1px dashed var(--osp-border);\n            border-radius: 12px;\n            background: linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.00));\n            padding: 20px;\n            text-align: center;\n            transition: border-color .2s, background .2s, transform .1s;\n            outline: none;\n        }\n        .osp-dropzone:hover, .osp-dropzone:focus, .osp-dropzone.osp-dropzone--over {\n            border-color: var(--osp-primary);\n            background: rgba(77,163,255,0.07);\n        }\n        .osp-dropzone:active { transform: scale(0.995); }\n        .osp-dropzone input[type=\"file\"] {\n            position: absolute; inset: 0; width: 100%; height: 100%;\n            opacity: 0; cursor: pointer;\n        }\n        .osp-drop-inner { display: grid; gap: 8px; place-items: center; }\n        .osp-drop-icon { font-size: 32px; }\n        .osp-drop-text { color: var(--osp-muted); }\n        .osp-file-name { margin-top: 6px; color: var(--osp-text); font-size: 13px; opacity: .9; }\n\n        .osp-actions {\n            display: flex; align-items: center; gap: 8px;\n            margin: 14px 0 8px 0;\n        }\n        .osp-actions__spacer { flex: 1; }\n        .osp-options {\n            margin: 8px 0 6px 0;\n            padding: 10px 12px;\n            border: 1px solid var(--osp-border);\n            border-radius: 10px;\n            background: #0f141b;\n        }\n        .osp-option {\n            display: inline-flex; align-items: center; gap: 8px;\n            font-size: 13px; color: var(--osp-text);\n        }\n        .osp-option input[type=\"checkbox\"] { transform: translateY(0.5px); }\n\n        .osp-btn {\n            appearance: none; border: 1px solid var(--osp-border);\n            background: #0f141b; color: var(--osp-text);\n            padding: 8px 12px; border-radius: 10px; font-size: 13px;\n            line-height: 1; cursor: pointer; transition: all .15s ease;\n        }\n        .osp-btn:hover { border-color: var(--osp-primary); color: #fff; }\n        .osp-btn:disabled { opacity: .5; cursor: not-allowed; }\n\n        .osp-btn--primary {\n            border-color: transparent;\n            background: linear-gradient(180deg, var(--osp-primary), var(--osp-primary-2));\n            color: #0a0f14; font-weight: 600;\n        }\n        .osp-btn--primary:hover { filter: brightness(1.06); }\n        .osp-btn--ghost {\n            background: transparent; color: var(--osp-muted);\n        }\n        .osp-btn--ghost:hover { color: #fff; border-color: var(--osp-primary); }\n\n        .osp-status { margin-top: 6px; font-size: 13px; color: var(--osp-muted); }\n        .osp-status.success { color: var(--osp-success); }\n        .osp-status.error { color: var(--osp-error); }\n\n        .osp-loader {\n            display: inline-flex; align-items: center; gap: 8px;\n            margin-top: 10px; font-size: 13px; color: var(--osp-muted);\n        }\n        .osp-spinner {\n            display: inline-block; width: 18px; height: 18px;\n            border: 3px solid rgba(255,255,255,0.25);\n            border-top-color: var(--osp-primary);\n            border-radius: 50%; animation: ospSpin .8s linear infinite;\n        }\n        @keyframes ospSpin { to { transform: rotate(360deg); } }\n    <\/style>\n    \n\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"class_list":["post-2438","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/bornfree.life\/dev\/wp-json\/wp\/v2\/pages\/2438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bornfree.life\/dev\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bornfree.life\/dev\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bornfree.life\/dev\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bornfree.life\/dev\/wp-json\/wp\/v2\/comments?post=2438"}],"version-history":[{"count":16,"href":"https:\/\/bornfree.life\/dev\/wp-json\/wp\/v2\/pages\/2438\/revisions"}],"predecessor-version":[{"id":5332,"href":"https:\/\/bornfree.life\/dev\/wp-json\/wp\/v2\/pages\/2438\/revisions\/5332"}],"wp:attachment":[{"href":"https:\/\/bornfree.life\/dev\/wp-json\/wp\/v2\/media?parent=2438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}