<style id="elementor-post-7651">.elementor-7651 .elementor-element.elementor-element-d1aa404{--display:flex;--min-height:50vh;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--justify-content:center;--align-items:center;--gap:1rem 1rem;--row-gap:1rem;--column-gap:1rem;--overflow:hidden;--overlay-opacity:0.05;--margin-top:0rem;--margin-bottom:0rem;--margin-left:0rem;--margin-right:0rem;--padding-top:4rem;--padding-bottom:4rem;--padding-left:3rem;--padding-right:3rem;}.elementor-7651 .elementor-element.elementor-element-d1aa404::before, .elementor-7651 .elementor-element.elementor-element-d1aa404 > .elementor-background-video-container::before, .elementor-7651 .elementor-element.elementor-element-d1aa404 > .e-con-inner > .elementor-background-video-container::before, .elementor-7651 .elementor-element.elementor-element-d1aa404 > .elementor-background-slideshow::before, .elementor-7651 .elementor-element.elementor-element-d1aa404 > .e-con-inner > .elementor-background-slideshow::before, .elementor-7651 .elementor-element.elementor-element-d1aa404 > .elementor-motion-effects-container > .elementor-motion-effects-layer::before{background-color:var( --e-global-color-60da78b );background-image:url("https://productregistrationindonesia.com/wp-content/uploads/2026/08/Pharmaceutical-Registration-img.webp");--background-overlay:'';background-position:center center;background-repeat:no-repeat;background-size:cover;}.elementor-7651 .elementor-element.elementor-element-a0030d0{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;}.elementor-7651 .elementor-element.elementor-element-6c5f958{--display:flex;--flex-direction:column;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--justify-content:center;--align-items:flex-start;--gap:15px 15px;--row-gap:15px;--column-gap:15px;}.elementor-7651 .elementor-element.elementor-element-5086837{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + -14px) 0px;}.elementor-7651 .elementor-element.elementor-element-b8bcc1c{--display:flex;}.elementor-7651 .elementor-element.elementor-element-e055be4{padding:25px 0px 25px 0px;}@media(max-width:1024px){.elementor-7651 .elementor-element.elementor-element-d1aa404{--min-height:0px;--margin-top:0rem;--margin-bottom:0rem;--margin-left:0rem;--margin-right:0rem;--padding-top:5rem;--padding-bottom:5rem;--padding-left:2rem;--padding-right:2rem;}.elementor-7651 .elementor-element.elementor-element-b8bcc1c{--padding-top:15px;--padding-bottom:15px;--padding-left:15px;--padding-right:15px;}}@media(max-width:767px){.elementor-7651 .elementor-element.elementor-element-d1aa404{--margin-top:0rem;--margin-bottom:0rem;--margin-left:0rem;--margin-right:0rem;--padding-top:5rem;--padding-bottom:5rem;--padding-left:1rem;--padding-right:1rem;}}@media(min-width:768px){.elementor-7651 .elementor-element.elementor-element-d1aa404{--content-width:1140px;}.elementor-7651 .elementor-element.elementor-element-6c5f958{--width:100%;}.elementor-7651 .elementor-element.elementor-element-b8bcc1c{--content-width:1140px;}}@media(max-width:1024px) and (min-width:768px){.elementor-7651 .elementor-element.elementor-element-6c5f958{--width:85%;}}/* Start custom CSS for container, class: .elementor-element-a0030d0 */.elementor-7651 .elementor-element.elementor-element-a0030d0{
    max-width: 1280px;
}/* End custom CSS */</style>{"id":7651,"date":"2026-09-09T11:21:06","date_gmt":"2026-09-09T04:21:06","guid":{"rendered":"https:\/\/productregistrationindonesia.com\/"},"modified":"2026-09-09T17:01:41","modified_gmt":"2026-09-09T10:01:41","slug":"medical-device-checker","status":"publish","type":"page","link":"https:\/\/productregistrationindonesia.com\/ja\/tools\/medical-device-class-checker\/","title":{"rendered":"\u533b\u7642\u6a5f\u5668\u30c1\u30a7\u30c3\u30ab\u30fc"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"7651\" class=\"elementor elementor-7651\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d1aa404 e-flex e-con-boxed e-con e-parent\" data-id=\"d1aa404\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-a0030d0 e-con-full e-flex e-con e-child\" data-id=\"a0030d0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-6c5f958 e-con-full e-flex e-con e-child\" data-id=\"6c5f958\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5086837 elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-shortcode\" data-id=\"5086837\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><nav aria-label=\"breadcrumbs\" class=\"rank-math-breadcrumb\"><p><span class=\"last\">Home<\/span><\/p><\/nav><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<h1 data-interaction-id=\"1f37bd7\" class=\"e-1f37bd7-8aa7fa8 e-heading-base e-default-h1\" data-e-type=\"widget\" data-id=\"1f37bd7\">Medical Device Checker:<br>Your Medical Device Classification Tool for Indonesia<\/h1>\n\t\t\t\t\t<p class=\"e-5370644-4c1132c e-paragraph-base e-default-p\" data-interaction-id=\"5370644\" data-e-type=\"widget\" data-id=\"5370644\">Use our Medical Device Checker to find your product's risk class in Indonesia. Answer a few questions about the device's intended use and function, and this medical device classification tool identifies the matching class, plus what's needed to complete your dossier.<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b8bcc1c e-flex e-con-boxed e-con e-parent\" data-id=\"b8bcc1c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e055be4 elementor-widget elementor-widget-html\" data-id=\"e055be4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"utf-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n<title>Medical Device Class Checker<\/title>\r\n\r\n<!-- Menambahkan font Poppins -->\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\r\n\r\n<script>\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 PENGATURAN \/ SETTINGS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\nwindow.PRI_CLASS_CONFIG = {\r\n  TOOL_NAME:   \"Medical Device Class Checker\",\r\n  ORG_TAG:     \"Product Registration Indonesia\",\r\n  CONSULT_URL: \"https:\/\/productregistrationindonesia.com\/contact\/\",\r\n  LEAD_WEBHOOK: \"\/wp-json\/pri-tools\/v1\/device-class-email\",\r\n  THEME: { ink:\"#10333F\", paper:\"#F7F8F6\", surface:\"#FFFFFF\", rule:\"#D8E0DF\",\r\n           muted:\"#5B7076\", valid:\"#0A6E5E\", warn:\"#A9660F\", alert:\"#9C2F2A\", radius:\"6px\" },\r\n  FONTS: {\r\n    GOOGLE_FONTS: \"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500;600;700&display=swap\",\r\n    body:    \"'Poppins', system-ui, sans-serif\",\r\n    display: \"'Poppins', sans-serif\",\r\n    mono:    \"'Poppins', sans-serif\"\r\n  }\r\n};\r\n<\/script>\r\n\r\n<style>\r\n:root{\r\n  --ink:#10333F; --paper:#F7F8F6; --surface:#FFF; --rule:#D8E0DF; --rule2:#EBEFEE;\r\n  --valid:#0A6E5E; --warn:#A9660F; --alert:#9C2F2A; --muted:#5B7076; --radius:6px;\r\n  \/* Mengatur seluruh elemen ke font Poppins *\/\r\n  --sans:'Poppins',system-ui,sans-serif;\r\n  --mono:'Poppins',system-ui,sans-serif;\r\n  --serif:'Poppins',sans-serif;\r\n}\r\n*{box-sizing:border-box;margin:0;padding:0;}\r\nbody{font-family:var(--sans);background:var(--paper);color:var(--ink);line-height:1.5;font-size:14px;-webkit-font-smoothing:antialiased;}\r\nbutton,input,select{font-family:inherit;font-size:inherit;color:inherit;}\r\n\r\n\/* Menghapus max-width agar full width mengikuti kontainer Elementor *\/\r\n.wrap{width:100%;margin:0 auto;padding:26px 0 50px;}\r\n\r\n.h1{font-family:var(--serif);font-size:30px;font-weight:600;letter-spacing:-.015em;margin-bottom:8px;}\r\n.lede{color:var(--muted);font-size:15px;max-width:66ch;margin-bottom:20px;}\r\n\r\n.step{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:20px;margin-bottom:13px;box-shadow: 0 4px 6px rgba(0,0,0,0.02);}\r\n.step[hidden]{display:none;}\r\n.stephead{display:flex;align-items:center;gap:10px;margin-bottom:14px;}\r\n.stephead i{width:24px;height:24px;flex:0 0 24px;border-radius:50%;background:var(--ink);color:#fff;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;font-style:normal;}\r\n.stephead b{font-size:16px;}\r\n.stephead span{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-left:auto;font-weight:500;}\r\n\r\n.q{margin-bottom:15px;}\r\n.q:last-child{margin-bottom:0;}\r\n.q > label{display:block;font-size:14px;font-weight:600;margin-bottom:4px;}\r\n.q .hint{font-size:13px;color:var(--muted);margin-bottom:8px;}\r\n.opts{display:flex;flex-direction:column;gap:6px;}\r\n.opt{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border:1.5px solid var(--rule);border-radius:var(--radius);cursor:pointer;background:var(--surface);transition:border-color .15s;}\r\n.opt:hover{border-color:var(--muted);}\r\n.opt input{margin-top:2px;flex:0 0 auto;accent-color:var(--ink);}\r\n.opt span{font-size:14px;}\r\n.opt small{display:block;color:var(--muted);font-size:12px;margin-top:2px;font-weight:400;}\r\n.opt:has(input:checked){border-color:var(--ink);background:#F4F8F8;}\r\n.opt:focus-within{outline:2px solid var(--valid);outline-offset:2px;}\r\n\r\n.result{background:var(--ink);color:#fff;border-radius:var(--radius);padding:28px;margin-top:16px;}\r\n.result .cap{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#8FA9B5;margin-bottom:6px;font-weight:500;}\r\n.result .cls{font-family:var(--serif);font-size:52px;font-weight:600;line-height:1;letter-spacing:-.02em;}\r\n.result .risk{font-size:14px;color:#CFE0EA;margin-top:10px;max-width:56ch;}\r\n.result .rules{margin-top:20px;padding-top:16px;border-top:1px solid rgba(255,255,255,.18);}\r\n.result .rules h4{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#8FA9B5;margin-bottom:12px;font-weight:500;}\r\n.rrow{display:flex;gap:12px;padding:8px 0;border-bottom:1px dotted rgba(255,255,255,.16);}\r\n.rrow:last-child{border-bottom:0;}\r\n.rtag{font-size:12px;font-weight:600;flex:0 0 62px;color:#3DBFA4;}\r\n.rtag[data-top=\"1\"]{color:#FFD98A;}\r\n.rtxt{font-size:13.5px;color:#DCE8ED;}\r\n.rcls{font-size:13px;font-weight:600;flex:0 0 22px;text-align:right;color:#fff;}\r\n.note-top{font-size:13px;color:#9FB6C8;margin-top:16px;font-style:italic;}\r\n\r\n.next{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:24px;margin-top:16px;}\r\n.next h3{font-family:var(--serif);font-size:18px;margin-bottom:8px;font-weight:600;}\r\n.next p{color:var(--muted);font-size:14px;max-width:62ch;margin-bottom:12px;}\r\n.next ul{margin:10px 0 0 20px;font-size:14px;color:var(--muted);}\r\n.next li{margin-bottom:6px;}\r\n.cta{display:inline-block;margin-top:16px;font-size:14px;font-weight:600;color:#fff;background:var(--ink);text-decoration:none;padding:12px 24px;border-radius:var(--radius);transition:opacity 0.2s;}\r\n.cta:hover{opacity:.87;color:#fff;}\r\n\r\n.mail{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:24px;margin-top:16px;}\r\n.mail h4{font-size:16px;margin-bottom:6px;font-weight:600;}\r\n.mail p{font-size:14px;color:var(--muted);margin-bottom:16px;max-width:60ch;}\r\n.mailrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:10px;}\r\n.mailrow input{padding:12px 14px;border:1.5px solid var(--rule);border-radius:var(--radius);background:var(--surface);width:100%;transition:border-color 0.2s;}\r\n.mailrow input:focus{outline:none;border-color:var(--ink);}\r\n.mailfull{grid-column:1\/-1;display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:4px;}\r\n.mailnote{font-size:12px;color:var(--muted);}\r\n.err{color:var(--alert);font-size:13px;margin-top:8px;}\r\n.hp-field{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;overflow:hidden!important;}\r\n\r\n.actions{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap;}\r\n.btn{padding:12px 24px;border:1.5px solid var(--ink);border-radius:var(--radius);background:var(--ink);color:#fff;font-weight:600;cursor:pointer;transition:opacity 0.2s;}\r\n.btn.ghost{background:transparent;color:var(--ink);}\r\n.btn.sm{padding:10px 18px;font-size:14px;}\r\n.btn:hover{opacity:.87;}\r\n.btn:focus-visible{outline:2px solid var(--valid);outline-offset:2px;}\r\n\r\n.disc{font-size:13px;color:var(--muted);margin-top:32px;padding:16px 20px;background:#FBF1E3;border:1px solid #EBD5B4;border-radius:var(--radius);line-height:1.6;}\r\n.disc b{color:var(--warn);display:block;margin-bottom:6px;font-size:14px;}\r\n.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 24px;border-radius:var(--radius);font-size:14px;opacity:0;pointer-events:none;transition:opacity .2s;font-weight:500;}\r\n.toast.on{opacity:1;}\r\n@media(prefers-reduced-motion:reduce){*{transition:none!important;}}\r\n\r\n\/* PENYESUAIAN MOBILE - ukuran font .h1 diperkecil di sini *\/\r\n@media(max-width:560px){\r\n  .h1{font-size:20px; line-height:1.3;} \r\n  .result .cls{font-size:40px;}\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div class=\"wrap\">\r\n  <h1 class=\"h1\">What risk class is your device in Indonesia?<\/h1>\r\n  <p class=\"lede\">A device's classification determines its dossier requirements, evaluation pathway, and associated fees based on functional behavior, not product naming. Our medical device classification tool walks you through the relevant details and identifies the corresponding class, along with every rule applied.<\/p>\r\n\r\n  <div id=\"form\"><\/div>\r\n  <div id=\"out\"><\/div>\r\n\r\n  <div class=\"disc\">\r\n    <b>Indicative guidance only \u2014 not a legal reference.<\/b>\r\n    Classification depends on the manufacturer's stated intended use and the full technical file, and a device\r\n    meeting several rules always takes the highest class. Combination devices are classified separately.\r\n    The evaluating authority makes the final determination and may reach a different conclusion. Confirm your\r\n    specific case before preparing a submission.\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"toast\" id=\"toast\"><\/div>\r\n\r\n<script>\r\n(function(){\r\n  var CFG = window.PRI_CLASS_CONFIG;\r\n  var $ = function(i){ return document.getElementById(i); };\r\n  var A = {};                       \/\/ answers\r\n  var mode = null;                  \/\/ 'device' | 'ivd'\r\n\r\n  (function look(){\r\n    var th=CFG.THEME||{}, fo=CFG.FONTS||{}, r=document.documentElement;\r\n    Object.keys(th).forEach(function(k){ if(th[k]) r.style.setProperty('--'+k, th[k]); });\r\n    if(fo.body) r.style.setProperty('--sans', fo.body);\r\n    if(fo.display) r.style.setProperty('--serif', fo.display);\r\n    if(fo.mono) r.style.setProperty('--mono', fo.mono);\r\n  })();\r\n\r\n  function esc(s){ return String(s==null?'':s).replace(\/[&<>\"']\/g,function(c){\r\n    return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c]; }); }\r\n  function toast(m){ var t=$('toast'); t.textContent=m; t.classList.add('on');\r\n    setTimeout(function(){ t.classList.remove('on'); }, 1900); }\r\n  var RANK = {A:0,B:1,C:2,D:3};\r\n  function higher(a,b){ return RANK[a] >= RANK[b] ? a : b; }\r\n\r\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 QUESTIONS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n\r\n  var Q_KIND = { id:'kind', label:'What kind of product is it?', opts:[\r\n    ['device','A medical device','Instruments, apparatus, implants, software, materials used on or in the body'],\r\n    ['ivd','An in vitro diagnostic (IVD)','Reagents, kits, analysers and specimen receptacles used to examine samples taken from the body']\r\n  ]};\r\n\r\n  var Q_DEVICE = [\r\n    { id:'invasive', label:'How does the device enter the body?',\r\n      hint:'Invasive means penetrating the body, wholly or partly, through an orifice or through the body surface.',\r\n      opts:[\r\n        ['none','Not invasive','Stays outside the body'],\r\n        ['orifice','Through a body orifice','Including the outer surface of the eyeball and permanent openings such as a stoma'],\r\n        ['surgical','Surgically invasive','Enters through the body surface via a surgical procedure'],\r\n        ['implant','Implantable, or long-term surgically invasive','Intended to remain in the body after the procedure']\r\n      ]},\r\n\r\n    { id:'duration', label:'How long is it in continuous contact?',\r\n      opts:[\r\n        ['transient','Transient \u2014 under 60 minutes',''],\r\n        ['short','Short term \u2014 60 minutes to 30 days',''],\r\n        ['long','Long term \u2014 over 30 days',''],\r\n        ['na','Not applicable','']\r\n      ]},\r\n\r\n    { id:'skin', label:'Does it contact injured skin?', when:function(){ return A.invasive==='none'; },\r\n      opts:[\r\n        ['no','No',''],\r\n        ['barrier','Yes \u2014 as a mechanical barrier, for compression, or to absorb exudate',''],\r\n        ['dermis','Yes \u2014 principally for wounds that breach the dermis','Including managing the wound micro-environment'],\r\n        ['secondary','Yes \u2014 for wounds breaching the dermis that heal only by secondary intention','']\r\n      ]},\r\n\r\n    { id:'channel', label:'Does it channel or store fluids, gases or tissue for later infusion or administration?',\r\n      when:function(){ return A.invasive==='none'; },\r\n      opts:[\r\n        ['no','No',''],\r\n        ['yes','Yes \u2014 general fluids or gases',''],\r\n        ['activeB','Yes \u2014 and it connects to an active device of Class B or higher',''],\r\n        ['blood','Yes \u2014 blood, other body fluids, organs, organ parts or tissue',''],\r\n        ['bag','It is a blood bag','']\r\n      ]},\r\n\r\n    { id:'modify', label:'Does it modify the biological or chemical composition of blood or body fluids intended for infusion?',\r\n      when:function(){ return A.invasive==='none'; },\r\n      opts:[\r\n        ['no','No',''],\r\n        ['yes','Yes',''],\r\n        ['filter','Yes \u2014 but only by filtration, centrifugation, or exchange of gas or heat','']\r\n      ]},\r\n\r\n    { id:'orificeSite', label:'Where in the body does it sit?', when:function(){ return A.invasive==='orifice'; },\r\n      opts:[\r\n        ['other','Elsewhere in the body',''],\r\n        ['upper','Oral cavity as far as the pharynx, ear canal up to the eardrum, or nasal cavity',''],\r\n        ['eye','Outer surface of the eyeball, or liable to be absorbed by the mucous membrane','']\r\n      ]},\r\n\r\n    { id:'connected', label:'Is it connected to an active device?', when:function(){ return A.invasive==='orifice'; },\r\n      opts:[\r\n        ['no','Not connected, or connected to a Class A device only',''],\r\n        ['yes','Connected to an active device of Class B or higher','']\r\n      ]},\r\n\r\n    { id:'reusable', label:'Is it a reusable surgical instrument?',\r\n      when:function(){ return A.invasive==='surgical' && A.duration==='transient'; },\r\n      opts:[['no','No',''],['yes','Yes','Intended to be reused after reprocessing']]},\r\n\r\n    { id:'teeth', label:'Is it placed in the teeth?', when:function(){ return A.invasive==='implant'; },\r\n      opts:[['no','No',''],['yes','Yes','']]},\r\n\r\n    { id:'active', label:'Is it an active device?',\r\n      hint:'Active means it runs on electricity or another power source other than the body or gravity. Standalone software counts as active.',\r\n      opts:[\r\n        ['no','Not active \u2014 no power source',''],\r\n        ['therapeutic','Active therapeutic','Supports, modifies, replaces or restores a biological function'],\r\n        ['diagnostic','Active diagnostic','Detects, diagnoses, monitors or helps manage a condition'],\r\n        ['control','Controls or monitors a Class C active therapeutic device','Or directly influences its performance'],\r\n        ['other','Active, but none of these','']\r\n      ]},\r\n\r\n    { id:'energy', label:'What does it do with energy?',\r\n      when:function(){ return A.active==='therapeutic' || A.active==='diagnostic'; },\r\n      opts:[\r\n        ['none','Nothing relevant',''],\r\n        ['exchange','Delivers or exchanges energy with the body',''],\r\n        ['hazard','Delivers energy in a potentially hazardous way','Considering its nature, density and where it is applied'],\r\n        ['illum','Only illuminates the patient','Visible or near-infrared light'],\r\n        ['radiopharm','Images the in vivo distribution of radiopharmaceuticals','']\r\n      ]},\r\n\r\n    { id:'vital', label:'Does it diagnose or monitor vital physiological processes?',\r\n      when:function(){ return A.active==='diagnostic'; },\r\n      opts:[\r\n        ['no','No',''],\r\n        ['yes','Yes \u2014 direct diagnosis or monitoring',''],\r\n        ['danger','Yes \u2014 and variation could put the patient in immediate danger','Cardiac performance, respiration, central nervous system activity, or diagnosing a patient in immediate danger']\r\n      ]},\r\n\r\n    { id:'ionising', label:'Does it involve ionising radiation?',\r\n      opts:[\r\n        ['no','No',''],\r\n        ['supply','Yes \u2014 it supplies energy as ionising radiation',''],\r\n        ['diagnostic','Yes \u2014 for diagnostic or interventional radiology','Including devices that control or monitor it']\r\n      ]},\r\n\r\n    { id:'critical', label:'Does it contact the heart, central circulatory system or central nervous system?',\r\n      hint:'Central circulatory system means the major internal vessels \u2014 aorta, pulmonary and coronary arteries, carotids, vena cava and the like. Central nervous system means brain, meninges and spinal cord.',\r\n      opts:[\r\n        ['no','No',''],\r\n        ['yes','Yes \u2014 direct contact','']\r\n      ]},\r\n\r\n    { id:'lifesupport', label:'Is it life-supporting or life-sustaining?',\r\n      opts:[['no','No',''],['yes','Yes','']]},\r\n\r\n    { id:'medicine', label:'Does it administer or remove medicines, body fluids or other substances?',\r\n      opts:[\r\n        ['no','No',''],\r\n        ['yes','Yes',''],\r\n        ['hazard','Yes \u2014 in a potentially hazardous way','Considering the substance, the body part, and the route']\r\n      ]},\r\n\r\n    { id:'biological', label:'Does it have a biological effect, or is it wholly or mainly absorbed?',\r\n      opts:[['no','No',''],['yes','Yes','']]},\r\n\r\n    { id:'chemical', label:'Does it undergo a chemical change in the body?',\r\n      opts:[['no','No',''],['yes','Yes',''],['teeth','Yes \u2014 but it is placed in the teeth','']]},\r\n\r\n    { id:'substance', label:'Does it contain a substance that would be a medicinal product on its own?',\r\n      hint:'Acting on the body in a way ancillary to the device.',\r\n      opts:[['no','No',''],['yes','Yes','']]},\r\n\r\n    { id:'tissue', label:'Is it made from, or does it incorporate, animal, microbial or recombinant material?',\r\n      opts:[\r\n        ['no','No',''],\r\n        ['yes','Yes \u2014 non-viable tissue, cells or their derivatives',''],\r\n        ['skin','Yes \u2014 non-viable animal tissue that contacts intact skin only','']\r\n      ]},\r\n\r\n    { id:'sterilise', label:'Is it intended to sterilise or disinfect other devices?',\r\n      opts:[\r\n        ['no','No',''],\r\n        ['endpoint','Yes \u2014 sterilising, or disinfecting as the end point of processing',''],\r\n        ['pre','Yes \u2014 disinfecting before end-point sterilisation, or higher-level disinfection',''],\r\n        ['lens','Yes \u2014 disinfecting, cleaning, rinsing or hydrating contact lenses','']\r\n      ]},\r\n\r\n    { id:'contraceptive', label:'Is it for contraception or preventing sexually transmitted disease?',\r\n      opts:[['no','No',''],['yes','Yes','']]}\r\n  ];\r\n\r\n  var Q_IVD = [\r\n    { id:'purpose', label:'What is the test for?',\r\n      hint:'Pick the closest match. If several apply, pick the most serious.',\r\n      opts:[\r\n        ['transfusion','Screening blood, tissue or organs for transmissible agents before transfusion or transplant',''],\r\n        ['lifethreat','Detecting a transmissible agent causing life-threatening, often incurable disease with high spread risk','HIV, HCV, HBV \u2014 initial, confirmatory and supplemental assays'],\r\n        ['abo','Blood grouping in the ABO, Rhesus, Kell, Kidd or Duffy systems',''],\r\n        ['tissuetype','Blood grouping or tissue typing for immunological compatibility','HLA typing'],\r\n        ['sti','Detecting sexually transmitted agents',''],\r\n        ['csf','Detecting infectious agents in cerebrospinal fluid or blood with limited spread risk',''],\r\n        ['severe','Detecting an infectious agent where a wrong result causes death or severe disability','CMV, MRSA, Chlamydia pneumoniae'],\r\n        ['prenatal','Pre-natal screening for immune status, or screening for congenital disorders in the foetus','Rubella, toxoplasmosis, spina bifida, Down syndrome'],\r\n        ['management','Determining infectious or immune status where a wrong result leads to a life-threatening decision',''],\r\n        ['cancer','Patient selection for therapy, disease staging, or cancer diagnosis','CD4 count'],\r\n        ['genetic','Human genetic testing','Huntington disease, cystic fibrosis'],\r\n        ['drugmonitor','Monitoring drug, substance or biological component levels where a wrong result is life-threatening','Troponin, CK-MB, BNP, cyclosporin, prothrombin time'],\r\n        ['selftest','Intended for self-testing by a lay person',''],\r\n        ['nearpatient','Blood gas or blood glucose testing near the patient, outside a laboratory',''],\r\n        ['preliminary','Not for medical determination, or preliminary and needing laboratory follow-up','Self-test pregnancy, fertility testing, urine strips'],\r\n        ['reagent','A reagent, instrument or specimen receptacle for use in an IVD procedure',''],\r\n        ['control','A control or calibrator with no assigned quantitative or qualitative value',''],\r\n        ['other','None of these','']\r\n      ]}\r\n  ];\r\n\r\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 RULE ENGINE \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n  \/* Each rule returns {rule, cls, why} or null. A device meeting several\r\n     rules takes the highest class, per the Pedoman. *\/\r\n\r\n  function deviceRules(){\r\n    var R = [], nonInv = A.invasive === 'none';\r\n\r\n    if(nonInv && A.skin && A.skin !== 'no'){\r\n      var c = A.skin === 'barrier' ? 'A' : (A.skin === 'dermis' ? 'B' : 'C');\r\n      R.push({rule:'Rule 1', cls:c, why:\r\n        A.skin==='barrier' ? 'Non-invasive, contacting injured skin as a mechanical barrier, for compression or to absorb exudate.'\r\n        : A.skin==='dermis' ? 'Non-invasive, used principally on wounds that breach the dermis.'\r\n        : 'Non-invasive, for wounds breaching the dermis that heal only by secondary intention.'});\r\n    }\r\n    if(nonInv && A.channel && A.channel !== 'no'){\r\n      var c2 = A.channel==='yes' ? 'A' : (A.channel==='bag' ? 'C' : 'B');\r\n      R.push({rule:'Rule 2', cls:c2, why:\r\n        A.channel==='yes' ? 'Non-invasive, channelling or storing fluids or gases for later administration.'\r\n        : A.channel==='activeB' ? 'Channelling device connected to an active device of Class B or higher.'\r\n        : A.channel==='blood' ? 'Channelling blood or other body fluids, or storing organs or tissue.'\r\n        : 'Blood bags are named explicitly in the rule.'});\r\n    }\r\n    if(nonInv && A.modify && A.modify !== 'no'){\r\n      R.push({rule:'Rule 3', cls: A.modify==='filter' ? 'B' : 'C', why:\r\n        A.modify==='filter' ? 'Treatment consists only of filtration, centrifugation, or exchange of gas or heat.'\r\n        : 'Modifies the biological or chemical composition of blood or body fluids intended for infusion.'});\r\n    }\r\n    if(nonInv && (!A.skin||A.skin==='no') && (!A.channel||A.channel==='no') && (!A.modify||A.modify==='no')){\r\n      R.push({rule:'Rule 4', cls:'A', why:'Non-invasive and not covered by Rules 1 to 3.'});\r\n    }\r\n\r\n    if(A.invasive === 'orifice'){\r\n      var c3;\r\n      if(A.connected === 'yes'){ c3 = 'B'; R.push({rule:'Rule 5', cls:'B', why:'Invasive via a body orifice and connected to an active device of Class B or higher.'}); }\r\n      else {\r\n        if(A.duration === 'transient') c3 = (A.orificeSite === 'eye') ? 'B' : 'A';\r\n        else if(A.duration === 'short') c3 = (A.orificeSite === 'upper') ? 'A' : 'B';\r\n        else c3 = (A.orificeSite === 'upper') ? 'B' : 'C';\r\n        R.push({rule:'Rule 5', cls:c3, why:'Invasive via a body orifice, ' +\r\n          (A.duration==='transient'?'transient use':(A.duration==='short'?'short-term use':'long-term use')) +\r\n          (A.orificeSite==='upper'?', confined to the oral cavity, ear canal or nasal cavity.'\r\n            : A.orificeSite==='eye'?', on the eyeball surface or liable to mucous membrane absorption.' : '.')});\r\n      }\r\n    }\r\n\r\n    if(A.invasive === 'surgical' && A.duration === 'transient'){\r\n      var c4 = 'B', w = 'Surgically invasive, transient use.';\r\n      if(A.reusable === 'yes'){ c4='A'; w='Reusable surgical instrument.'; }\r\n      R.push({rule:'Rule 6', cls:c4, why:w});\r\n      if(A.ionising==='supply') R.push({rule:'Rule 6', cls:'C', why:'Transient surgically invasive device supplying ionising radiation.'});\r\n      if(A.biological==='yes') R.push({rule:'Rule 6', cls:'C', why:'Transient surgically invasive device with a biological effect, or wholly or mainly absorbed.'});\r\n      if(A.medicine==='hazard') R.push({rule:'Rule 6', cls:'C', why:'Administers medicines in a potentially hazardous manner.'});\r\n      if(A.critical==='yes') R.push({rule:'Rule 6', cls:'D', why:'Direct contact with the heart, central circulatory system or central nervous system.'});\r\n    }\r\n\r\n    if(A.invasive === 'surgical' && A.duration === 'short'){\r\n      R.push({rule:'Rule 7', cls:'B', why:'Surgically invasive, short-term use.'});\r\n      if(A.medicine==='yes'||A.medicine==='hazard') R.push({rule:'Rule 7', cls:'C', why:'Short-term surgically invasive device that administers medicines.'});\r\n      if(A.chemical==='yes') R.push({rule:'Rule 7', cls:'C', why:'Undergoes a chemical change in the body.'});\r\n      if(A.ionising==='supply') R.push({rule:'Rule 7', cls:'C', why:'Supplies energy in the form of ionising radiation.'});\r\n      if(A.biological==='yes') R.push({rule:'Rule 7', cls:'D', why:'Has a biological effect, or is wholly or mainly absorbed.'});\r\n      if(A.critical==='yes') R.push({rule:'Rule 7', cls:'D', why:'Direct contact with the heart, central circulatory system or central nervous system.'});\r\n    }\r\n\r\n    if(A.invasive === 'implant' || (A.invasive==='surgical' && A.duration==='long')){\r\n      var c5 = 'C', w5 = 'Implantable, or long-term surgically invasive.';\r\n      if(A.teeth === 'yes'){ c5='B'; w5='Implantable but placed in the teeth.'; }\r\n      R.push({rule:'Rule 8', cls:c5, why:w5});\r\n      if(A.critical==='yes') R.push({rule:'Rule 8', cls:'D', why:'Direct contact with the heart, central circulatory system or central nervous system.'});\r\n      if(A.lifesupport==='yes') R.push({rule:'Rule 8', cls:'D', why:'Life-supporting or life-sustaining.'});\r\n      if(A.active && A.active!=='no') R.push({rule:'Rule 8', cls:'D', why:'Active implantable device.'});\r\n      if(A.biological==='yes') R.push({rule:'Rule 8', cls:'D', why:'Has a biological effect, or is wholly or mainly absorbed.'});\r\n      if(A.medicine==='yes'||A.medicine==='hazard') R.push({rule:'Rule 8', cls:'D', why:'Administers a medicinal product.'});\r\n      if(A.chemical==='yes') R.push({rule:'Rule 8', cls:'D', why:'Undergoes a chemical change in the body.'});\r\n    }\r\n\r\n    if(A.active === 'therapeutic'){\r\n      if(A.energy==='exchange') R.push({rule:'Rule 9(i)', cls:'B', why:'Active therapeutic device that delivers or exchanges energy.'});\r\n      if(A.energy==='hazard' || A.ionising==='supply') R.push({rule:'Rule 9(i)', cls:'C', why:'Delivers or exchanges energy in a potentially hazardous way, including ionising radiation.'});\r\n    }\r\n    if(A.active === 'control'){\r\n      R.push({rule:'Rule 9(ii)', cls:'C', why:'Controls or monitors a Class C active therapeutic device, or directly influences its performance.'});\r\n    }\r\n    if(A.active === 'diagnostic'){\r\n      if(A.energy==='illum') R.push({rule:'Rule 10(i)', cls:'A', why:'Active diagnostic device used solely to illuminate the patient with visible or near-infrared light.'});\r\n      else if(A.energy==='exchange'||A.energy==='hazard'||A.energy==='radiopharm'||A.vital==='yes')\r\n        R.push({rule:'Rule 10(i)', cls:'B', why:'Active diagnostic device that supplies energy absorbed by the body, images radiopharmaceutical distribution, or directly diagnoses or monitors vital physiological processes.'});\r\n      if(A.vital==='danger') R.push({rule:'Rule 10(i)', cls:'C', why:'Monitors vital physiological parameters where variation could put the patient in immediate danger, or diagnoses a patient already in danger.'});\r\n    }\r\n    if(A.ionising === 'diagnostic'){\r\n      R.push({rule:'Rule 10(ii)', cls:'C', why:'Emits ionising radiation for diagnostic or interventional radiology, including devices that control or monitor it.'});\r\n    }\r\n    if(A.active && A.active!=='no' && (A.medicine==='yes'||A.medicine==='hazard')){\r\n      R.push({rule:'Rule 11', cls: A.medicine==='hazard' ? 'C' : 'B',\r\n        why: A.medicine==='hazard' ? 'Administers or removes substances in a potentially hazardous manner.'\r\n                                   : 'Administers or removes medicines, body fluids or other substances.'});\r\n    }\r\n    if(A.active === 'other'){\r\n      R.push({rule:'Rule 12', cls:'A', why:'Active device not covered by Rules 9, 10 or 11.'});\r\n    }\r\n\r\n    if(A.substance === 'yes') R.push({rule:'Rule 13', cls:'D', why:'Incorporates a substance that would be a medicinal product on its own, acting ancillary to the device.'});\r\n    if(A.tissue === 'yes')    R.push({rule:'Rule 14', cls:'D', why:'Made from or incorporating non-viable animal, microbial or recombinant tissue, cells or derivatives.'});\r\n    if(A.tissue === 'skin')   R.push({rule:'Rule 14', cls:'A', why:'Non-viable animal tissue contacting intact skin only.'});\r\n    if(A.sterilise === 'endpoint') R.push({rule:'Rule 15', cls:'C', why:'Intended to sterilise devices, or to disinfect as the end point of processing.'});\r\n    if(A.sterilise === 'pre')      R.push({rule:'Rule 15', cls:'B', why:'Intended to disinfect devices before end-point sterilisation, or higher-level disinfection.'});\r\n    if(A.sterilise === 'lens')     R.push({rule:'Rule 15', cls:'C', why:'Intended to disinfect, clean, rinse or hydrate contact lenses.'});\r\n    if(A.contraceptive === 'yes'){\r\n      R.push({rule:'Rule 16', cls: (A.invasive==='implant'||A.duration==='long') ? 'D' : 'C',\r\n        why: (A.invasive==='implant'||A.duration==='long')\r\n          ? 'Contraceptive or STD-prevention device that is implantable or long-term invasive.'\r\n          : 'Intended for contraception or prevention of sexually transmitted disease.'});\r\n    }\r\n    return R;\r\n  }\r\n\r\n  function ivdRules(){\r\n    var p = A.purpose, M = {\r\n      transfusion: ['Rule 1','D','Screens blood, tissue or organs for transmissible agents to assess suitability for transfusion or transplant.'],\r\n      lifethreat:  ['Rule 1','D','Detects a transmissible agent causing life-threatening, often incurable disease with high risk of propagation.'],\r\n      abo:         ['Rule 2','D','Determines blood group in the ABO, Rhesus, Kell, Kidd or Duffy systems.'],\r\n      tissuetype:  ['Rule 2','C','Blood grouping or tissue typing to establish immunological compatibility.'],\r\n      sti:         ['Rule 3','C','Detects sexually transmitted agents.'],\r\n      csf:         ['Rule 3','C','Detects infectious agents in cerebrospinal fluid or blood with limited risk of propagation.'],\r\n      severe:      ['Rule 3','C','Detects an infectious agent where an erroneous result causes death or severe disability.'],\r\n      prenatal:    ['Rule 3','C','Pre-natal screening for immune status, or screening for congenital disorders in the foetus.'],\r\n      management:  ['Rule 3','C','Determines infectious or immune status where an erroneous result leads to a life-threatening management decision.'],\r\n      cancer:      ['Rule 3','C','Patient selection for therapy, disease staging, or cancer diagnosis.'],\r\n      genetic:     ['Rule 3','C','Human genetic testing.'],\r\n      drugmonitor: ['Rule 3','C','Monitors drug, substance or biological component levels where an erroneous result is life-threatening.'],\r\n      selftest:    ['Rule 4','C','Intended for self-testing by a lay person.'],\r\n      nearpatient: ['Rule 4','C','Blood gas or blood glucose testing performed near the patient, outside a laboratory.'],\r\n      preliminary: ['Rule 4','B','Not for medical determination, or preliminary and requiring laboratory follow-up.'],\r\n      reagent:     ['Rule 5','A','A reagent, instrument or specimen receptacle intended for use in an IVD procedure.'],\r\n      control:     ['Rule 7','B','A control or calibrator without an assigned quantitative or qualitative value.'],\r\n      other:       ['Rule 6','B','Not covered by Rules 1 to 5.']\r\n    };\r\n    if(!p || !M[p]) return [];\r\n    return [{rule:M[p][0], cls:M[p][1], why:M[p][2]}];\r\n  }\r\n\r\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 RENDER \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n  function optHTML(q, o){\r\n    return '<label class=\"opt\"><input type=\"radio\" name=\"'+q.id+'\" value=\"'+esc(o[0])+'\"'+\r\n      (A[q.id]===o[0]?' checked':'')+'><span>'+esc(o[1])+\r\n      (o[2]?'<small>'+esc(o[2])+'<\/small>':'')+'<\/span><\/label>';\r\n  }\r\n  function qHTML(q){\r\n    return '<div class=\"q\"><label>'+esc(q.label)+'<\/label>'+\r\n      (q.hint?'<div class=\"hint\">'+esc(q.hint)+'<\/div>':'')+\r\n      '<div class=\"opts\">'+q.opts.map(function(o){ return optHTML(q,o); }).join('')+'<\/div><\/div>';\r\n  }\r\n\r\n  function draw(){\r\n    var h = '<div class=\"step\"><div class=\"stephead\"><i>1<\/i><b>Product type<\/b><\/div>' + qHTML(Q_KIND) + '<\/div>';\r\n\r\n    if(mode === 'device'){\r\n      var visible = Q_DEVICE.filter(function(q){ return !q.when || q.when(); });\r\n      var groups = [\r\n        ['Contact with the body', ['invasive','duration','skin','channel','modify','orificeSite','connected','reusable','teeth']],\r\n        ['Power and energy',      ['active','energy','vital','ionising']],\r\n        ['Risk characteristics',  ['critical','lifesupport','medicine','biological','chemical']],\r\n        ['Special categories',    ['substance','tissue','sterilise','contraceptive']]\r\n      ];\r\n      var n = 2;\r\n      groups.forEach(function(g){\r\n        var qs = visible.filter(function(q){ return g[1].indexOf(q.id) >= 0; });\r\n        if(!qs.length) return;\r\n        h += '<div class=\"step\"><div class=\"stephead\"><i>'+n+'<\/i><b>'+esc(g[0])+'<\/b>'+\r\n             '<span>'+qs.filter(function(q){return A[q.id];}).length+' of '+qs.length+'<\/span><\/div>'+\r\n             qs.map(qHTML).join('') + '<\/div>';\r\n        n++;\r\n      });\r\n    } else if(mode === 'ivd'){\r\n      h += '<div class=\"step\"><div class=\"stephead\"><i>2<\/i><b>Intended purpose<\/b><\/div>'+\r\n           Q_IVD.map(qHTML).join('') + '<\/div>';\r\n    }\r\n\r\n    $('form').innerHTML = h;\r\n    [].forEach.call($('form').querySelectorAll('input[type=radio]'), function(r){\r\n      r.addEventListener('change', function(){\r\n        if(r.name === 'kind'){ mode = r.value; A = {kind:r.value}; }\r\n        else A[r.name] = r.value;\r\n        draw(); result();\r\n      });\r\n    });\r\n  }\r\n\r\n  var RISK = {\r\n    A:'Low risk. The lightest dossier and the fastest evaluation route.',\r\n    B:'Low to moderate risk. Fuller technical documentation is required.',\r\n    C:'Moderate to high risk. Substantive safety and performance evidence is required.',\r\n    D:'High risk. The heaviest dossier and the longest evaluation.'\r\n  };\r\n\r\n  function result(){\r\n    if(!mode){ $('out').innerHTML=''; return; }\r\n    var R = mode === 'device' ? deviceRules() : ivdRules();\r\n    if(!R.length){ $('out').innerHTML=''; return; }\r\n\r\n    var top = R.reduce(function(a,r){ return higher(a, r.cls); }, 'A');\r\n    var sorted = R.slice().sort(function(a,b){ return RANK[b.cls]-RANK[a.cls]; });\r\n    var multi = R.filter(function(r){ return r.cls === top; }).length;\r\n\r\n    var h = '<div class=\"result\">'+\r\n      '<div class=\"cap\">Provisional class<\/div>'+\r\n      '<div class=\"cls\">Class '+top+'<\/div>'+\r\n      '<div class=\"risk\">'+esc(RISK[top])+' Imported products register as <strong>AKL<\/strong>; '+\r\n      'locally manufactured ones as AKD.<\/div>'+\r\n      '<div class=\"rules\"><h4>Rules that applied \u2014 '+R.length+'<\/h4>'+\r\n        sorted.map(function(r){\r\n          return '<div class=\"rrow\"><span class=\"rtag\" data-top=\"'+(r.cls===top?'1':'0')+'\">'+esc(r.rule)+'<\/span>'+\r\n            '<span class=\"rtxt\">'+esc(r.why)+'<\/span><span class=\"rcls\">'+r.cls+'<\/span><\/div>';\r\n        }).join('')+\r\n      '<\/div>'+\r\n      (R.length > 1 ? '<div class=\"note-top\">Where a product meets several rules, the highest class governs \u2014 '+\r\n        'here that is Class '+top+(multi>1?', reached by '+multi+' separate rules':'')+'.<\/div>' : '')+\r\n    '<\/div>';\r\n\r\n    h += '<div class=\"next\"><h3>What Class '+top+' means for your submission<\/h3>'+\r\n      '<p>Class sets the evaluation route, the depth of the technical file and the government fee. '+\r\n      'It is decided from the intended use the manufacturer states, so the wording of your own documentation '+\r\n      'can change the outcome \u2014 which is worth getting right before you file rather than after.<\/p>'+\r\n      '<ul>'+\r\n        '<li>Imported devices register as AKL and need an Indonesian licence holder or authorised distributor.<\/li>'+\r\n        '<li>Devices combined with other devices are classified separately, one by one.<\/li>'+\r\n        '<li>The evaluator can reach a different conclusion from the same facts.<\/li>'+\r\n      '<\/ul><\/div>';\r\n\r\n    h += '<div class=\"mail\"><h4>Send Result to Email<\/h4>'+\r\n      '<p>Please provide your details below to receive the classification result by email. '+\r\n      'Our consulting team will follow up within 24 hours if you need help with medical device registration in Indonesia.<\/p>'+\r\n      '<div class=\"mailrow\">'+\r\n        '<input type=\"email\" id=\"em\" placeholder=\"Work email\" autocomplete=\"email\">'+\r\n        '<input type=\"text\" id=\"co\" placeholder=\"Company\" autocomplete=\"organization\">'+\r\n        '<input type=\"text\" id=\"pd\" placeholder=\"Device name\">'+\r\n        '<div class=\"hp-field\" aria-hidden=\"true\"><label>Website<input type=\"text\" id=\"website\" tabindex=\"-1\" autocomplete=\"off\"><\/label><\/div>'+\r\n        '<div class=\"mailfull\"><button class=\"btn sm\" id=\"send\">Submit<\/button>'+\r\n        '<span class=\"mailnote\">We will send your result by email. Our consultant may follow up regarding your registration inquiry.<\/span><\/div>'+\r\n      '<\/div><div class=\"err\" id=\"merr\" hidden><\/div><\/div>';\r\n\r\n    h += '<div class=\"actions\"><button class=\"btn ghost sm\" id=\"reset\">Start again<\/button><\/div>';\r\n\r\n    $('out').innerHTML = h;\r\n    $('reset').addEventListener('click', function(){ A={}; mode=null; draw(); $('out').innerHTML=''; window.scrollTo({top:0,behavior:'smooth'}); });\r\n    $('send').addEventListener('click', function(){ send(top, sorted); });\r\n  }\r\n\r\n  function report(top, R){\r\n    var L = [];\r\n    L.push('MEDICAL DEVICE RISK CLASSIFICATION');\r\n    L.push('Checked: ' + new Date().toLocaleDateString('en-GB',{day:'numeric',month:'long',year:'numeric'}));\r\n    L.push('Product type: ' + (mode === 'ivd' ? 'In vitro diagnostic' : 'Medical device'));\r\n    L.push('');\r\n    L.push('PROVISIONAL CLASS: ' + top);\r\n    L.push(RISK[top]);\r\n    L.push('');\r\n    L.push('RULES APPLIED');\r\n    R.forEach(function(r){ L.push('  [' + r.cls + '] ' + r.rule + ' \u2014 ' + r.why); });\r\n    if(R.length > 1){ L.push(''); L.push('Where several rules apply, the highest class governs.'); }\r\n    L.push('');\r\n    L.push('Imported devices register as AKL and require an Indonesian licence holder.');\r\n    L.push('Devices combined with other devices are classified separately.');\r\n    L.push('');\r\n    L.push('Indicative only, not a legal reference. Classification depends on the stated');\r\n    L.push('intended use and the full technical file, and the evaluating authority makes');\r\n    L.push('the final determination.');\r\n    L.push('Prepared by Product Registration Indonesia.');\r\n    return L.join('\\n');\r\n  }\r\n\r\n  function send(top, R){\r\n    var email = ($('em')||{}).value || '', err = $('merr');\r\n    if(!\/^[^@\\s]+@[^@\\s]+\\.[^@\\s]{2,}$\/.test(email.trim())){\r\n      err.textContent = 'Enter a valid email address.'; err.hidden = false; return;\r\n    }\r\n    err.hidden = true;\r\n    var payload = {\r\n      email: email.trim(),\r\n      company: ($('co')||{}).value || '',\r\n      device:  ($('pd')||{}).value || '',\r\n      productType: mode,\r\n      deviceClass: top,\r\n      rulesApplied: R.map(function(r){ return { rule:r.rule, cls:r.cls, why:r.why }; }),\r\n      answers: A,\r\n      report: report(top, R),\r\n      riskText: RISK[top],\r\n      submissionSummary: {\r\n        intro: 'Class sets the evaluation route, the depth of the technical file and the government fee. It is decided from the intended use the manufacturer states, so the wording of your own documentation can change the outcome.',\r\n        bullets: [\r\n          'Imported devices register as AKL and need an Indonesian licence holder or authorised distributor.',\r\n          'Devices combined with other devices are classified separately, one by one.',\r\n          'The evaluator can reach a different conclusion from the same facts.'\r\n        ]\r\n      },\r\n      website: ($('website')||{}).value || '',\r\n      page: location.href,\r\n      at: new Date().toISOString()\r\n    };\r\n    if(!CFG.LEAD_WEBHOOK){\r\n      navigator.clipboard.writeText(payload.report)\r\n        .then(function(){ toast('No email endpoint configured \u2014 summary copied'); })\r\n        .catch(function(){ toast('No email endpoint configured'); });\r\n      return;\r\n    }\r\n    var b = $('send'); b.disabled = true; b.textContent = 'Sending\u2026';\r\n    fetch(CFG.LEAD_WEBHOOK, {method:'POST', headers:{'content-type':'application\/json'}, body: JSON.stringify(payload)})\r\n      .then(function(r){\r\n        b.disabled=false; b.textContent='Submit';\r\n        if(r.ok) toast('Result sent \u2014 check your inbox');\r\n        else { err.textContent='That did not go through. Try again.'; err.hidden=false; }\r\n      })\r\n      .catch(function(){\r\n        b.disabled=false; b.textContent='Submit';\r\n        err.textContent='That did not go through. Try again.'; err.hidden=false;\r\n      });\r\n  }\r\n\r\n  draw();\r\n})();\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Medical Device Checker:Your Medical Device Classification Tool for Indonesia Use our Medical Device Checker to find your product&#8217;s risk class in Indonesia. Answer a few questions about the device&#8217;s intended use and function, and this medical device classification tool identifies the matching class, plus what&#8217;s needed to complete your dossier. Medical Device Class Checker What risk class is your device in Indonesia? A device&#8217;s classification determines its dossier requirements, evaluation pathway, and associated fees based on functional behavior, not product naming. Our medical device classification tool walks you through the relevant details and identifies the corresponding class, along with every rule applied. Indicative guidance only \u2014 not a legal reference. [&hellip;]<\/p>\n","protected":false},"author":15,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"page-category":[],"class_list":["post-7651","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/productregistrationindonesia.com\/ja\/wp-json\/wp\/v2\/pages\/7651","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/productregistrationindonesia.com\/ja\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/productregistrationindonesia.com\/ja\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/productregistrationindonesia.com\/ja\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/productregistrationindonesia.com\/ja\/wp-json\/wp\/v2\/comments?post=7651"}],"version-history":[{"count":8,"href":"https:\/\/productregistrationindonesia.com\/ja\/wp-json\/wp\/v2\/pages\/7651\/revisions"}],"predecessor-version":[{"id":7687,"href":"https:\/\/productregistrationindonesia.com\/ja\/wp-json\/wp\/v2\/pages\/7651\/revisions\/7687"}],"wp:attachment":[{"href":"https:\/\/productregistrationindonesia.com\/ja\/wp-json\/wp\/v2\/media?parent=7651"}],"wp:term":[{"taxonomy":"page-category","embeddable":true,"href":"https:\/\/productregistrationindonesia.com\/ja\/wp-json\/wp\/v2\/page-category?post=7651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}