Save point: expanded AMA to AMERICAN MEDICAL ASSOCIATION + mesh network connectivity fix (4 nearest neighbors + BFS partition repair)
This commit is contained in:
49
index.html
49
index.html
@@ -1839,7 +1839,7 @@
|
|||||||
typeHtmlCalmly(txt,"THE CARNEGIE FOUNDATION COMMISSIONED THE FLEXNER REPORT. IT EVALUATED EVERY MEDICAL SCHOOL IN AMERICA. HALF WERE SHUT DOWN — PARTICULARLY THOSE TRAINING WOMEN, BLACK DOCTORS, AND RURAL PRACTITIONERS.",()=>{
|
typeHtmlCalmly(txt,"THE CARNEGIE FOUNDATION COMMISSIONED THE FLEXNER REPORT. IT EVALUATED EVERY MEDICAL SCHOOL IN AMERICA. HALF WERE SHUT DOWN — PARTICULARLY THOSE TRAINING WOMEN, BLACK DOCTORS, AND RURAL PRACTITIONERS.",()=>{
|
||||||
const t2=setTimeout(()=>{
|
const t2=setTimeout(()=>{
|
||||||
txt.innerHTML+="\n\n";
|
txt.innerHTML+="\n\n";
|
||||||
typeHtmlCalmly(txt,"THE AMA TOOK CONTROL OF MEDICAL LICENSING. MEDICINE BECAME A GATEKEPT PROFESSION.",()=>{
|
typeHtmlCalmly(txt,"THE AMERICAN MEDICAL ASSOCIATION TOOK CONTROL OF MEDICAL LICENSING. MEDICINE BECAME A GATEKEPT PROFESSION.",()=>{
|
||||||
showNextBtn('next10a');showNextBtn('sources10a');
|
showNextBtn('next10a');showNextBtn('sources10a');
|
||||||
},undefined,undefined,h10c);
|
},undefined,undefined,h10c);
|
||||||
},800);
|
},800);
|
||||||
@@ -2028,7 +2028,7 @@
|
|||||||
txt.innerHTML+="\n\n";
|
txt.innerHTML+="\n\n";
|
||||||
vis.classList.add('visible');
|
vis.classList.add('visible');
|
||||||
let html='<table class="comp-table"><tr><th></th><th>TRADITIONAL</th><th>DECENTRALIZED</th></tr>';
|
let html='<table class="comp-table"><tr><th></th><th>TRADITIONAL</th><th>DECENTRALIZED</th></tr>';
|
||||||
html+='<tr><td>GATEKEEPERS</td><td>✅ YES — AMA, FDA, INSURANCE</td><td>❌ NONE</td></tr>';
|
html+='<tr><td>GATEKEEPERS</td><td>✅ YES — AMERICAN MEDICAL ASSOCIATION, FDA, INSURANCE</td><td>❌ NONE</td></tr>';
|
||||||
html+='<tr><td>YOUR DATA</td><td>OWNED BY THE SYSTEM</td><td>YOU CONTROL</td></tr>';
|
html+='<tr><td>YOUR DATA</td><td>OWNED BY THE SYSTEM</td><td>YOU CONTROL</td></tr>';
|
||||||
html+='<tr><td>INNOVATION</td><td>APPROVAL-BASED</td><td>PRACTICE-BASED</td></tr>';
|
html+='<tr><td>INNOVATION</td><td>APPROVAL-BASED</td><td>PRACTICE-BASED</td></tr>';
|
||||||
html+='<tr><td>COST</td><td>$4.1T AND RISING</td><td>MARKET-BASED</td></tr>';
|
html+='<tr><td>COST</td><td>$4.1T AND RISING</td><td>MARKET-BASED</td></tr>';
|
||||||
@@ -2651,7 +2651,50 @@
|
|||||||
.filter(n => n.id !== node.id && n.online)
|
.filter(n => n.id !== node.id && n.online)
|
||||||
.map(n => ({ node: n, dist: Math.hypot(n.x - node.x, n.y - node.y) }))
|
.map(n => ({ node: n, dist: Math.hypot(n.x - node.x, n.y - node.y) }))
|
||||||
.sort((a, b) => a.dist - b.dist);
|
.sort((a, b) => a.dist - b.dist);
|
||||||
node.connections = distances.slice(0, 3).map(d => d.node.id);
|
node.connections = distances.slice(0, 4).map(d => d.node.id);
|
||||||
|
}
|
||||||
|
ensureConnectivity();
|
||||||
|
}
|
||||||
|
|
||||||
|
function ensureConnectivity() {
|
||||||
|
const online = meshState.nodes.filter(n => n.online);
|
||||||
|
if (online.length < 2) return;
|
||||||
|
const adj = {};
|
||||||
|
for (const node of online) {
|
||||||
|
adj[node.id] = node.connections.filter(cid => {
|
||||||
|
const cn = meshState.nodes.find(n => n.id === cid);
|
||||||
|
return cn && cn.online;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const visited = new Set();
|
||||||
|
const queue = [online[0].id];
|
||||||
|
visited.add(online[0].id);
|
||||||
|
while (queue.length) {
|
||||||
|
const cur = queue.shift();
|
||||||
|
for (const nb of (adj[cur] || [])) {
|
||||||
|
if (!visited.has(nb)) {
|
||||||
|
visited.add(nb);
|
||||||
|
queue.push(nb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const unreachable = online.filter(n => !visited.has(n.id));
|
||||||
|
for (const orphan of unreachable) {
|
||||||
|
let best = null;
|
||||||
|
let bestDist = Infinity;
|
||||||
|
for (const node of meshState.nodes) {
|
||||||
|
if (!node.online || !visited.has(node.id)) continue;
|
||||||
|
const d = Math.hypot(orphan.x - node.x, orphan.y - node.y);
|
||||||
|
if (d < bestDist) {
|
||||||
|
bestDist = d;
|
||||||
|
best = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (best) {
|
||||||
|
orphan.connections.push(best.id);
|
||||||
|
best.connections.push(orphan.id);
|
||||||
|
visited.add(orphan.id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user