
鯖江商工会議所の臨時総会で発表いただいた健康情報。丹南地区は高血圧が多い!
「【NDB】NDBオープンデータ|厚生労働省」
出展として記述されていたNDBオープンデータは厚労省のデータ。都道府県別だけでなく、都道府県内で医師会で区切られた地域、二次医療圏別のデータがあるので県内の地域別の特性が分かるのがおもしろい!
大量のファイルがあるので、HTMLをスクレイピングして、エクセルファイルをまとめてダウンロードし、一覧をCSVファイルでまとめるプログラムを作りました。
import { fetchOrLoad } from "https://js.sabae.cc/fetchOrLoad.js"; import { HTMLParser } from "https://js.sabae.cc/HTMLParser.js"; import { CSV } from "https://js.sabae.cc/CSV.js"; const url = "https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/0000177221_00014.html"; // 1度取得したらtemp/にキャッシュする const html = await fetchOrLoad(url); // HTMLを解析! const dom = HTMLParser.parse(html); // aタグとh4タグを全部取得 const as = dom.querySelectorAll("h3, h4, a"); // リンク一覧 let category1 = ""; let category2 = ""; const items0 = as.map(i => { if (i.tagName == "H3") { category1 = i.text.trim(); category2 = ""; return null; } else if (i.tagName == "H4") { category2 = i.text.trim(); return null; } else if (i.tagName == "A") { return { category1, category2, title: i.text.trim(), url: new URL(i.getAttribute("href"), url).href }; } }).filter(i => i); // xlsxリンク一覧 const items = items0.filter(i => i.url?.endsWith(".xlsx")); // サイズをタイトルから分離 items.forEach(i => { const n = i.title.lastIndexOf("["); i.size = i.title.substring(n + 1, i.title.length - 1); i.title = i.title.substring(0, n).trim(); }); // 一覧をCSVファイルとして保存 console.log(items, items.length); await Deno.writeTextFile("ndb-opendata-09.csv", CSV.stringify(items));
「ndb-opendata/ndb-opendata-09.csv at main · code4fukui/ndb-opendata」
エクセルで402ファイルのオープンデータがあります(シートが複数あるものもあり)
おもしろいデータを見つけたら、CSV化して解析しましょう!
健康診断に含まれる、特定健診の結果も都道府県別、二次医療圏別で比較できます。
「NDB Opendata - code4fukui/ndb-opendata」
ダウンロードしたエクセルファイルやプログラムはGitHubにて公開!
データで創ろう健康日本!
links
- 【NDB】NDBオープンデータ|厚生労働省