医療費が高額になったとき、実際にいくら支払えばよいのか不安になります。高額療養費制度を利用すれば、所得に応じた上限額を超えた分が払い戻されます。
このシミュレーターは、年齢・所得区分・医療費総額を入力するだけで自己負担上限額を計算します。払い戻し金額もすぐにわかるため、医療費の支払い計画が立てやすくなります。
たとえば70歳未満で年収約370〜770万円の方が100万円の医療費を支払った場合、自己負担額は30万円です。しかし高額療養費制度を使えば、実際の負担は約87,430円まで下がります。
目次
Chart.js版(グラフあり)
高額療養費シミュレーター
医療費が高額になった際の自己負担上限額と払い戻し金額を計算
このシミュレーターは、厚生労働省の高額療養費制度に基づき、年齢と所得区分に応じた自己負担上限額を計算します。
医療費の窓口負担額から、実際に支払う金額と払い戻される金額を試算できます。
📋 70歳未満の自己負担上限額(月額)
厚生労働省が定める所得区分別の自己負担上限額です。
医療費が高額になっても、この金額を超える部分は払い戻されます。
| 所得区分 |
年収目安 |
自己負担上限額 |
| 区分ア |
約1,160万円〜 |
252,600円+(医療費-842,000円)×1% |
| 区分イ |
約770万円〜1,160万円 |
167,400円+(医療費-558,000円)×1% |
| 区分ウ |
約370万円〜770万円 |
80,100円+(医療費-267,000円)×1% |
| 区分エ |
〜約370万円 |
57,600円 |
| 区分オ |
住民税非課税 |
35,400円 |
※ 過去12ヶ月以内に3回以上上限額に達した場合、4回目以降は「多数回該当」として上限額がさらに下がります。
📋 70歳以上の自己負担上限額(月額)
70歳以上の方は、外来(個人単位)と入院・世帯合算の2つの上限額があります。
| 所得区分 |
外来(個人) |
入院・世帯合算 |
| 現役並みⅢ(年収約1,160万円〜) |
252,600円+1% |
252,600円+1% |
| 現役並みⅡ(年収約770万円〜1,160万円) |
167,400円+1% |
167,400円+1% |
| 現役並みⅠ(年収約370万円〜770万円) |
80,100円+1% |
80,100円+1% |
| 一般(年収約156万円〜370万円) |
18,000円 |
57,600円 |
| 低所得Ⅱ(住民税非課税) |
8,000円 |
24,600円 |
| 低所得Ⅰ(年金収入80万円以下等) |
8,000円 |
15,000円 |
※ 外来は個人単位、入院・世帯合算は世帯単位で計算されます。
⚠️ 免責事項
このシミュレーターは厚生労働省の高額療養費制度に基づく概算値です。実際の払い戻し額は、加入している健康保険組合や自治体の独自の付加給付制度により異なる場合があります。正確な金額は、ご加入の健康保険組合または市区町村の窓口にお問い合わせください。多数回該当や世帯合算などの特例は考慮されていません。
コピー用コード
<!--
================================================
WordPress カスタムHTMLブロック用コード
高額療養費シミュレーター(通常版)
================================================
【機能】医療費が高額になった際の自己負担上限額と払い戻し金額を計算
【セキュリティ】ブラウザ内完結/通信ゼロ
【利用規約】無償・無保証、医療費判断は自己責任
【外部依存】Chart.js 4.4.0 (CDN経由・遅延読み込み)
【データソース】厚生労働省「高額療養費制度」
【計算式】所得区分別の自己負担上限額計算式(70歳未満・70歳以上)
================================================
-->
<!-- MSIM:STYLE-START -->
<style>
.kougaku-simulator{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;max-width:800px;margin:0 auto;padding:20px;box-sizing:border-box;background:#fff;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.1)}
.kougaku-simulator *{box-sizing:border-box}
.kougaku-simulator .title{font-size:24px;font-weight:700;text-align:center;margin:0 0 10px;color:#333}
.kougaku-simulator .subtitle{font-size:14px;color:#666;text-align:center;margin:0 0 30px;line-height:1.6}
.kougaku-simulator .input-section{background:#f8f9fa;padding:20px;border-radius:8px;margin-bottom:30px}
.kougaku-simulator .form-group{margin-bottom:20px}
.kougaku-simulator .form-group:last-child{margin-bottom:0}
.kougaku-simulator label{display:block;font-weight:600;margin-bottom:8px;color:#333;font-size:14px}
.kougaku-simulator select,.kougaku-simulator input[type="number"]{width:100%;padding:12px;border:2px solid #ddd;border-radius:6px;font-size:16px;transition:border-color .3s}
.kougaku-simulator select:focus,.kougaku-simulator input[type="number"]:focus{outline:none;border-color:#4a90e2}
.kougaku-simulator .hint{font-size:12px;color:#666;margin-top:5px;line-height:1.5}
.kougaku-simulator .result-section{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);padding:30px;border-radius:8px;margin-bottom:30px;color:#fff}
.kougaku-simulator .result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:20px}
.kougaku-simulator .result-item{text-align:center}
.kougaku-simulator .result-label{font-size:13px;opacity:.9;margin-bottom:8px}
.kougaku-simulator .result-value{font-size:28px;font-weight:700;line-height:1.2}
.kougaku-simulator .result-value.large{font-size:32px}
.kougaku-simulator .summary-section{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1);margin-bottom:30px}
.kougaku-simulator .summary-title{font-size:16px;font-weight:600;margin:0 0 15px;color:#333;text-align:center}
.kougaku-simulator .summary-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}
.kougaku-simulator .summary-item{background:#f8f9fa;padding:15px;border-radius:6px;text-align:center}
.kougaku-simulator .summary-item-label{font-size:12px;color:#666;margin-bottom:5px}
.kougaku-simulator .summary-item-value{font-size:20px;font-weight:700;color:#333}
.kougaku-simulator .chart-section{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1);margin-bottom:30px}
.kougaku-simulator .chart-title{font-size:16px;font-weight:600;margin:0 0 20px;color:#333;text-align:center}
.kougaku-simulator .chart-container{position:relative;height:300px}
.kougaku-simulator .info-section{background:#f8f9fa;padding:20px;border-radius:8px;margin-bottom:30px}
.kougaku-simulator .info-title{font-size:14px;font-weight:600;margin:0 0 15px;color:#333;text-align:center}
.kougaku-simulator .info-description{font-size:13px;color:#555;margin:0 0 15px;text-align:center;line-height:1.8}
.kougaku-simulator table{width:100%;border-collapse:collapse;font-size:13px;background:#fff;border-radius:6px;overflow:hidden}
.kougaku-simulator th,.kougaku-simulator td{padding:12px;text-align:left;border-bottom:1px solid #e0e0e0}
.kougaku-simulator th{background:#f0f0f0;font-weight:600;color:#333}
.kougaku-simulator tr:last-child td{border-bottom:none}
.kougaku-simulator .text-right{text-align:right}
.kougaku-simulator .text-center{text-align:center}
.kougaku-simulator .info-note{font-size:12px;color:#666;margin:10px 0 0;text-align:center}
.kougaku-simulator .disclaimer-section{background:#fff3cd;border-left:4px solid #ffc107;padding:15px;border-radius:4px;margin-bottom:20px}
.kougaku-simulator .disclaimer-title{font-size:14px;font-weight:600;color:#856404;margin:0 0 10px}
.kougaku-simulator .disclaimer-text{font-size:13px;color:#856404;line-height:1.6;margin:0}
.kougaku-simulator .branding{text-align:right;margin-top:30px;color:#999;font-size:12px}
.kougaku-simulator .branding a{color:#4a90e2;text-decoration:none}
@media (max-width:600px){
.kougaku-simulator{padding:15px}
.kougaku-simulator .title{font-size:20px}
.kougaku-simulator .result-value{font-size:24px}
.kougaku-simulator .result-value.large{font-size:28px}
.kougaku-simulator .summary-grid{grid-template-columns:1fr}
.kougaku-simulator .chart-container{height:250px}
}
</style>
<!-- MSIM:STYLE-END -->
<!-- MSIM:HTML-START -->
<div class="kougaku-simulator" data-tool="kougaku-ryouyouhi-simulator" data-version="1.0.0">
<p class="title">高額療養費シミュレーター</p>
<p class="subtitle">医療費が高額になった際の自己負担上限額と払い戻し金額を計算</p>
<p class="subtitle">このシミュレーターは、厚生労働省の高額療養費制度に基づき、年齢と所得区分に応じた自己負担上限額を計算します。<br>医療費の窓口負担額から、実際に支払う金額と払い戻される金額を試算できます。</p>
<div class="input-section">
<div class="form-group">
<label for="age-group">年齢区分</label>
<select data-ms-age-group>
<option value="under70">70歳未満</option>
<option value="over70">70歳以上</option>
</select>
<p class="hint">70歳を境に自己負担上限額の計算式が変わります</p>
</div>
<div class="form-group">
<label for="income-category">所得区分</label>
<select data-ms-income-category>
<option value="a">区分ア(年収約1,160万円〜)</option>
<option value="b">区分イ(年収約770万円〜1,160万円)</option>
<option value="c" selected>区分ウ(年収約370万円〜770万円)</option>
<option value="d">区分エ(年収〜約370万円)</option>
<option value="e">区分オ(住民税非課税)</option>
</select>
<p class="hint">健康保険証に記載されている所得区分をご確認ください</p>
</div>
<div class="form-group">
<label for="medical-cost">医療費総額(円)</label>
<input type="number" data-ms-medical-cost value="1000000" min="0" step="10000">
<p class="hint">病院の窓口で支払う前の医療費総額(保険適用前の10割)</p>
</div>
<div class="form-group">
<label for="copay-rate">窓口負担割合(%)</label>
<select data-ms-copay-rate>
<option value="30" selected>3割負担</option>
<option value="20">2割負担</option>
<option value="10">1割負担</option>
</select>
<p class="hint">健康保険証に記載されている負担割合をご確認ください</p>
</div>
</div>
<div class="result-section">
<div class="result-grid">
<div class="result-item">
<div class="result-label">窓口負担額</div>
<div class="result-value" data-ms-window-payment>¥300,000</div>
</div>
<div class="result-item">
<div class="result-label">自己負担上限額</div>
<div class="result-value" data-ms-limit-amount>¥87,430</div>
</div>
</div>
<div class="result-grid">
<div class="result-item">
<div class="result-label">払い戻し額</div>
<div class="result-value large" data-ms-refund-amount>¥212,570</div>
</div>
<div class="result-item">
<div class="result-label">実質負担額</div>
<div class="result-value" data-ms-actual-payment>¥87,430</div>
</div>
</div>
</div>
<div class="summary-section">
<p class="summary-title">💡 計算結果の内訳</p>
<div class="summary-grid">
<div class="summary-item">
<div class="summary-item-label">医療費総額</div>
<div class="summary-item-value" data-ms-summary-total>¥1,000,000</div>
</div>
<div class="summary-item">
<div class="summary-item-label">保険給付額</div>
<div class="summary-item-value" data-ms-summary-insurance>¥700,000</div>
</div>
<div class="summary-item">
<div class="summary-item-label">窓口負担額</div>
<div class="summary-item-value" data-ms-summary-window>¥300,000</div>
</div>
<div class="summary-item">
<div class="summary-item-label">高額療養費</div>
<div class="summary-item-value" data-ms-summary-refund>¥212,570</div>
</div>
</div>
</div>
<div class="chart-section">
<p class="chart-title">📊 医療費の負担内訳</p>
<div class="chart-container">
<canvas data-ms-canvas></canvas>
</div>
</div>
<div class="info-section">
<p class="info-title">📋 70歳未満の自己負担上限額(月額)</p>
<p class="info-description">厚生労働省が定める所得区分別の自己負担上限額です。<br>医療費が高額になっても、この金額を超える部分は払い戻されます。</p>
<table>
<thead>
<tr>
<th>所得区分</th>
<th>年収目安</th>
<th class="text-right">自己負担上限額</th>
</tr>
</thead>
<tbody>
<tr>
<td>区分ア</td>
<td>約1,160万円〜</td>
<td class="text-right">252,600円+(医療費-842,000円)×1%</td>
</tr>
<tr>
<td>区分イ</td>
<td>約770万円〜1,160万円</td>
<td class="text-right">167,400円+(医療費-558,000円)×1%</td>
</tr>
<tr>
<td>区分ウ</td>
<td>約370万円〜770万円</td>
<td class="text-right">80,100円+(医療費-267,000円)×1%</td>
</tr>
<tr>
<td>区分エ</td>
<td>〜約370万円</td>
<td class="text-right">57,600円</td>
</tr>
<tr>
<td>区分オ</td>
<td>住民税非課税</td>
<td class="text-right">35,400円</td>
</tr>
</tbody>
</table>
<p class="info-note">※ 過去12ヶ月以内に3回以上上限額に達した場合、4回目以降は「多数回該当」として上限額がさらに下がります。</p>
</div>
<div class="info-section">
<p class="info-title">📋 70歳以上の自己負担上限額(月額)</p>
<p class="info-description">70歳以上の方は、外来(個人単位)と入院・世帯合算の2つの上限額があります。</p>
<table>
<thead>
<tr>
<th>所得区分</th>
<th class="text-right">外来(個人)</th>
<th class="text-right">入院・世帯合算</th>
</tr>
</thead>
<tbody>
<tr>
<td>現役並みⅢ(年収約1,160万円〜)</td>
<td class="text-right">252,600円+1%</td>
<td class="text-right">252,600円+1%</td>
</tr>
<tr>
<td>現役並みⅡ(年収約770万円〜1,160万円)</td>
<td class="text-right">167,400円+1%</td>
<td class="text-right">167,400円+1%</td>
</tr>
<tr>
<td>現役並みⅠ(年収約370万円〜770万円)</td>
<td class="text-right">80,100円+1%</td>
<td class="text-right">80,100円+1%</td>
</tr>
<tr>
<td>一般(年収約156万円〜370万円)</td>
<td class="text-right">18,000円</td>
<td class="text-right">57,600円</td>
</tr>
<tr>
<td>低所得Ⅱ(住民税非課税)</td>
<td class="text-right">8,000円</td>
<td class="text-right">24,600円</td>
</tr>
<tr>
<td>低所得Ⅰ(年金収入80万円以下等)</td>
<td class="text-right">8,000円</td>
<td class="text-right">15,000円</td>
</tr>
</tbody>
</table>
<p class="info-note">※ 外来は個人単位、入院・世帯合算は世帯単位で計算されます。</p>
</div>
<div class="disclaimer-section">
<p class="disclaimer-title">⚠️ 免責事項</p>
<p class="disclaimer-text">このシミュレーターは厚生労働省の高額療養費制度に基づく概算値です。実際の払い戻し額は、加入している健康保険組合や自治体の独自の付加給付制度により異なる場合があります。正確な金額は、ご加入の健康保険組合または市区町村の窓口にお問い合わせください。多数回該当や世帯合算などの特例は考慮されていません。</p>
</div>
<div class="branding">Powered by <a href="https://minna-calc.com/" target="_blank" rel="noopener">みんなのシミュレーター</a></div>
</div>
<!-- MSIM:HTML-END -->
<!-- MSIM:JS-START -->
<script>
(()=>{
"use strict";
const TOOL="kougaku-ryouyouhi-simulator";
const ROOT_SELECTOR=`.kougaku-simulator[data-tool="${TOOL}"]`;
const CHART_URL="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js";
const fmt=new Intl.NumberFormat("ja-JP",{style:"currency",currency:"JPY",minimumFractionDigits:0,maximumFractionDigits:0});
const charts=new WeakMap();
let chartLoader=null;
function ensureChartJs(){
if(window.Chart)return Promise.resolve(window.Chart);
if(chartLoader)return chartLoader;
chartLoader=new Promise((resolve,reject)=>{
const existing=document.querySelector(`script[src="${CHART_URL}"]`);
const script=existing||document.createElement("script");
script.src=CHART_URL;
script.async=true;
script.dataset.msimChart="true";
script.onload=()=>resolve(window.Chart);
script.onerror=()=>reject(new Error("Chart.js load failed"));
if(!existing)document.head.appendChild(script);
});
return chartLoader;
}
const registerInit=handler=>{
let pending=false;
const schedule=()=>{
if(pending)return;
pending=true;
requestAnimationFrame(()=>{
pending=false;
handler();
});
};
queueMicrotask(schedule);
if(document.readyState!=="loading")schedule();
document.addEventListener("DOMContentLoaded",schedule,{passive:true});
window.addEventListener("load",schedule,{passive:true});
document.addEventListener("readystatechange",()=>{
if(document.readyState==="interactive"||document.readyState==="complete"){
schedule();
}
},{passive:true});
new MutationObserver(schedule).observe(document.body,{childList:true,subtree:true});
};
function boot(root){
if(root.dataset.msimInitialized==="true")return;
root.dataset.msimInitialized="true";
const q=sel=>root.querySelector(sel);
const els={
inputs:root.querySelectorAll("input, select"),
ageGroup:q('[data-ms-age-group]'),
incomeCategory:q('[data-ms-income-category]'),
medicalCost:q('[data-ms-medical-cost]'),
copayRate:q('[data-ms-copay-rate]'),
windowPayment:q('[data-ms-window-payment]'),
limitAmount:q('[data-ms-limit-amount]'),
refundAmount:q('[data-ms-refund-amount]'),
actualPayment:q('[data-ms-actual-payment]'),
summaryTotal:q('[data-ms-summary-total]'),
summaryInsurance:q('[data-ms-summary-insurance]'),
summaryWindow:q('[data-ms-summary-window]'),
summaryRefund:q('[data-ms-summary-refund]'),
canvas:q('[data-ms-canvas]')
};
function calculateLimit(medicalCost,ageGroup,incomeCategory){
if(ageGroup==="under70"){
if(incomeCategory==="a"){
return 252600+Math.max(0,medicalCost-842000)*0.01;
}
if(incomeCategory==="b"){
return 167400+Math.max(0,medicalCost-558000)*0.01;
}
if(incomeCategory==="c"){
return 80100+Math.max(0,medicalCost-267000)*0.01;
}
if(incomeCategory==="d"){
return 57600;
}
if(incomeCategory==="e"){
return 35400;
}
}
if(ageGroup==="over70"){
if(incomeCategory==="a"){
return 252600+Math.max(0,medicalCost-842000)*0.01;
}
if(incomeCategory==="b"){
return 167400+Math.max(0,medicalCost-558000)*0.01;
}
if(incomeCategory==="c"){
return 80100+Math.max(0,medicalCost-267000)*0.01;
}
if(incomeCategory==="d"){
return 57600;
}
if(incomeCategory==="e"){
return 24600;
}
}
return 80100+Math.max(0,medicalCost-267000)*0.01;
}
function calculate(){
const medicalCost=Number(els.medicalCost.value)||0;
const copayRate=Number(els.copayRate.value)/100;
const ageGroup=els.ageGroup.value;
const incomeCategory=els.incomeCategory.value;
const insurancePayment=medicalCost*(1-copayRate);
const windowPayment=medicalCost*copayRate;
const limitAmount=Math.ceil(calculateLimit(medicalCost,ageGroup,incomeCategory));
const actualPayment=Math.min(windowPayment,limitAmount);
const refundAmount=Math.max(0,windowPayment-limitAmount);
return{
medicalCost:medicalCost,
insurancePayment:insurancePayment,
windowPayment:windowPayment,
limitAmount:limitAmount,
actualPayment:actualPayment,
refundAmount:refundAmount,
chartData:{
labels:['医療費の内訳'],
datasets:[
{
label:'保険給付額',
data:[insurancePayment],
backgroundColor:'rgba(75, 192, 192, 0.8)',
borderColor:'rgba(75, 192, 192, 1)',
borderWidth:1
},
{
label:'実質負担額',
data:[actualPayment],
backgroundColor:'rgba(255, 99, 132, 0.8)',
borderColor:'rgba(255, 99, 132, 1)',
borderWidth:1
},
{
label:'高額療養費(払い戻し)',
data:[refundAmount],
backgroundColor:'rgba(54, 162, 235, 0.8)',
borderColor:'rgba(54, 162, 235, 1)',
borderWidth:1
}
]
}
};
}
function updateDom(result){
els.windowPayment.textContent=fmt.format(result.windowPayment);
els.limitAmount.textContent=fmt.format(result.limitAmount);
els.refundAmount.textContent=fmt.format(result.refundAmount);
els.actualPayment.textContent=fmt.format(result.actualPayment);
els.summaryTotal.textContent=fmt.format(result.medicalCost);
els.summaryInsurance.textContent=fmt.format(result.insurancePayment);
els.summaryWindow.textContent=fmt.format(result.windowPayment);
els.summaryRefund.textContent=fmt.format(result.refundAmount);
}
async function render(){
const result=calculate();
updateDom(result);
if(!els.canvas)return;
try{
const ChartLib=await ensureChartJs();
const previous=charts.get(root);
if(previous)previous.destroy();
const chart=new ChartLib(els.canvas,{
type:"bar",
data:result.chartData,
options:{
responsive:true,
maintainAspectRatio:false,
interaction:{mode:"index",intersect:false},
plugins:{
tooltip:{
mode:"index",
intersect:false,
callbacks:{
label:ctx=>`${ctx.dataset.label}: ${fmt.format(ctx.parsed.y)}`
}
},
legend:{position:"bottom"}
},
scales:{
x:{stacked:true},
y:{
stacked:true,
beginAtZero:true,
ticks:{callback:v=>fmt.format(v)}
}
}
}
});
charts.set(root,chart);
}catch(error){
console.error("Chart.js initialization failed:",error);
}
}
els.inputs.forEach(el=>el.addEventListener("input",render,{passive:true}));
render();
}
function init(){
document.querySelectorAll(ROOT_SELECTOR).forEach(boot);
}
registerInit(init);
})();
</script>
<!-- MSIM:JS-END -->
Chart.jsなし簡易版(軽量)
高額療養費シミュレーター
医療費が高額になった際の自己負担上限額と払い戻し金額を計算
このシミュレーターでは、厚生労働省の高額療養費制度に基づき、1ヶ月間(同月内)の医療費が高額になった場合の自己負担上限額と払い戻し金額を計算します。
70歳未満の方を対象とし、所得区分に応じた正確な上限額を算出します。
💰 費用内訳
| 項目 |
金額 |
| 医療費総額(保険適用前) | ¥1,000,000 |
| 保険適用後の自己負担額(3割) | ¥300,000 |
| 高額療養費制度による上限額 | ¥87,430 |
| 実際の自己負担額 | ¥87,430 |
| 払い戻し金額 | ¥212,570 |
📊 このシミュレーターの前提条件
高額療養費制度は、1ヶ月間(同月内)の医療費が高額になった場合に、自己負担額を一定額に抑える制度です。
70歳未満の方を対象とし、所得区分に応じて自己負担上限額が異なります。
| 所得区分 |
年収目安 |
自己負担上限額(月額) |
| 区分オ |
約1,160万円以上 |
252,600円+(医療費-842,000円)×1% |
| 区分ア |
約770万円〜約1,160万円 |
167,400円+(医療費-558,000円)×1% |
| 区分イ |
約370万円〜約770万円 |
80,100円+(医療費-267,000円)×1% |
| 区分ウ |
約210万円〜約370万円 |
57,600円 |
| 区分エ |
約156万円以下(住民税非課税) |
35,400円 |
※ 厚生労働省「高額療養費制度」令和6年度基準に基づく
※ 医療費は保険適用前の総額(10割)で計算
※ 同月内(1日〜末日)の医療費が対象
※ 食費・差額ベッド代等は対象外
⚠️ ご利用上の注意
- このシミュレーターは70歳未満の方を対象としています
- 計算結果は目安であり、実際の払い戻し額は加入している健康保険組合等にご確認ください
- 同月内に複数の医療機関を受診した場合は、21,000円以上の自己負担額を合算できます
- 世帯合算や多数回該当による軽減措置は考慮していません
- 食費、差額ベッド代、先進医療費等は高額療養費制度の対象外です
- 実際の申請手続きについては、加入している健康保険組合等にお問い合わせください
コピー用コード
<!--
================================================
WordPress カスタムHTMLブロック用コード
高額療養費シミュレーター(簡易版・公的機関版)
================================================
【機能】医療費が高額になった際の自己負担上限額と払い戻し金額を計算(グラフ表示を除く)
【セキュリティ】ブラウザ内完結/通信ゼロ/外部CDN依存なし
【利用規約】無償・無保証、医療費判断は自己責任
【特徴】Chart.js不使用・完全スタンドアロン・アクセシビリティ対応
【外部依存】なし
【データソース】厚生労働省「高額療養費制度」令和6年度基準
【計算式】所得区分別自己負担上限額=基準額+(医療費-基準医療費)×1%
================================================
-->
<!-- MSIM:STYLE-START -->
<style>
.kougaku-simulator{max-width:800px;margin:0 auto;padding:20px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;color:#333;line-height:1.6;box-sizing:border-box}
.kougaku-simulator *{box-sizing:border-box}
.kougaku-simulator .title{font-size:24px;font-weight:bold;text-align:center;margin:0 0 10px;color:#333}
.kougaku-simulator .subtitle{font-size:14px;color:#666;text-align:center;margin:0 0 20px;line-height:1.8}
.kougaku-simulator .description{font-size:13px;color:#555;margin:0 0 30px;text-align:center;line-height:1.8;padding:15px;background:#f0f8ff;border-radius:8px}
.kougaku-simulator .input-section{background:#fff;padding:25px;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.1);margin-bottom:30px}
.kougaku-simulator .input-group{margin-bottom:20px}
.kougaku-simulator .input-group:last-child{margin-bottom:0}
.kougaku-simulator label{display:block;margin-bottom:8px;font-weight:600;color:#333;font-size:14px}
.kougaku-simulator select,.kougaku-simulator input[type="number"]{width:100%;padding:12px;border:2px solid #e0e0e0;border-radius:8px;font-size:16px;transition:border-color .3s}
.kougaku-simulator select:focus,.kougaku-simulator input[type="number"]:focus{outline:none;border-color:#4a90e2}
.kougaku-simulator .unit{font-size:14px;color:#666;margin-left:8px}
.kougaku-simulator .result-section{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);padding:30px;border-radius:12px;box-shadow:0 4px 15px rgba(0,0,0,.2);margin-bottom:30px}
.kougaku-simulator .result-item{background:rgba(255,255,255,.95);padding:20px;border-radius:8px;margin-bottom:15px}
.kougaku-simulator .result-item:last-child{margin-bottom:0}
.kougaku-simulator .result-label{font-size:14px;color:#666;margin-bottom:8px;font-weight:600}
.kougaku-simulator .result-value{font-size:32px;font-weight:bold;color:#333}
.kougaku-simulator .result-value.highlight{color:#e74c3c}
.kougaku-simulator .result-value.positive{color:#27ae60}
.kougaku-simulator .breakdown-section{background:#fff;padding:25px;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.1);margin-bottom:30px}
.kougaku-simulator .breakdown-section .section-title{font-size:16px;font-weight:600;margin:0 0 20px;color:#333;text-align:center;padding-bottom:10px;border-bottom:2px solid #4a90e2}
.kougaku-simulator .breakdown-table{width:100%;border-collapse:collapse;margin-top:15px}
.kougaku-simulator .breakdown-table th{background:#f8f9fa;padding:12px;text-align:left;font-weight:600;color:#333;font-size:14px;border-bottom:2px solid #dee2e6}
.kougaku-simulator .breakdown-table td{padding:12px;border-bottom:1px solid #dee2e6;font-size:14px;color:#555}
.kougaku-simulator .breakdown-table tr:last-child td{border-bottom:none}
.kougaku-simulator .breakdown-table .text-right{text-align:right}
.kougaku-simulator .breakdown-table .total-row{background:#f8f9fa;font-weight:bold}
.kougaku-simulator .breakdown-table .total-row td{color:#333;font-size:15px}
.kougaku-simulator .info-section{margin:30px 0;padding:20px;background:#f8f9fa;border-radius:8px}
.kougaku-simulator .info-section .info-title{font-size:14px;font-weight:600;margin:0 0 15px;color:#333;text-align:center}
.kougaku-simulator .info-section .info-description{font-size:13px;color:#555;margin:0 0 15px;text-align:center;line-height:1.8}
.kougaku-simulator .info-section table{width:100%;border-collapse:collapse;margin:15px 0}
.kougaku-simulator .info-section th{background:#e9ecef;padding:10px;text-align:left;font-weight:600;color:#333;font-size:13px;border:1px solid #dee2e6}
.kougaku-simulator .info-section td{padding:10px;border:1px solid #dee2e6;font-size:13px;color:#555}
.kougaku-simulator .info-section .text-right{text-align:right}
.kougaku-simulator .info-section .info-note{font-size:12px;color:#666;margin:10px 0 0;text-align:center}
.kougaku-simulator .disclaimer-section{background:#fff3cd;border-left:4px solid #ffc107;padding:15px 20px;border-radius:8px;margin-top:30px}
.kougaku-simulator .disclaimer-section .disclaimer-title{font-size:14px;font-weight:600;color:#856404;margin:0 0 10px}
.kougaku-simulator .disclaimer-section ul{margin:10px 0;padding-left:20px}
.kougaku-simulator .disclaimer-section li{color:#856404;font-size:13px;margin-bottom:8px;line-height:1.6}
@media(max-width:600px){
.kougaku-simulator{padding:15px}
.kougaku-simulator .title{font-size:20px}
.kougaku-simulator .subtitle{font-size:13px}
.kougaku-simulator .description{font-size:12px;padding:12px}
.kougaku-simulator .input-section,.kougaku-simulator .result-section,.kougaku-simulator .breakdown-section{padding:20px}
.kougaku-simulator .result-value{font-size:24px}
.kougaku-simulator .breakdown-table th,.kougaku-simulator .breakdown-table td{padding:8px;font-size:12px}
.kougaku-simulator .info-section{padding:15px}
.kougaku-simulator .info-section th,.kougaku-simulator .info-section td{padding:8px;font-size:12px}
}
</style>
<!-- MSIM:STYLE-END -->
<!-- MSIM:HTML-START -->
<div class="kougaku-simulator" data-tool="kougaku-ryouyouhi-simulator" data-version="1.0.0">
<p class="title">高額療養費シミュレーター</p>
<p class="subtitle">医療費が高額になった際の自己負担上限額と払い戻し金額を計算</p>
<p class="description">このシミュレーターでは、厚生労働省の高額療養費制度に基づき、1ヶ月間(同月内)の医療費が高額になった場合の自己負担上限額と払い戻し金額を計算します。<br>70歳未満の方を対象とし、所得区分に応じた正確な上限額を算出します。</p>
<div class="input-section">
<div class="input-group">
<label for="income-category">所得区分</label>
<select data-ms-income-category>
<option value="low">区分エ:住民税非課税(年収約156万円以下)</option>
<option value="middle-low">区分ウ:年収約210万円〜約370万円</option>
<option value="middle" selected>区分イ:年収約370万円〜約770万円</option>
<option value="middle-high">区分ア:年収約770万円〜約1,160万円</option>
<option value="high">区分オ:年収約1,160万円以上</option>
</select>
</div>
<div class="input-group">
<label for="medical-cost">医療費総額(保険適用前)</label>
<input type="number" data-ms-medical-cost value="1000000" min="0" step="10000">
<span class="unit">円</span>
</div>
<div class="input-group">
<label for="insurance-rate">保険適用割合</label>
<select data-ms-insurance-rate>
<option value="70" selected>3割負担(通常)</option>
<option value="80">2割負担</option>
<option value="90">1割負担</option>
</select>
</div>
</div>
<div class="result-section">
<div class="result-item">
<div class="result-label">自己負担上限額</div>
<div class="result-value highlight" data-ms-limit-amount>¥87,430</div>
</div>
<div class="result-item">
<div class="result-label">払い戻し金額</div>
<div class="result-value positive" data-ms-refund-amount>¥212,570</div>
</div>
</div>
<div class="breakdown-section">
<p class="section-title">💰 費用内訳</p>
<table class="breakdown-table">
<thead>
<tr>
<th>項目</th>
<th class="text-right">金額</th>
</tr>
</thead>
<tbody data-ms-breakdown-table>
<tr><td>医療費総額(保険適用前)</td><td class="text-right">¥1,000,000</td></tr>
<tr><td>保険適用後の自己負担額(3割)</td><td class="text-right">¥300,000</td></tr>
<tr><td>高額療養費制度による上限額</td><td class="text-right">¥87,430</td></tr>
<tr class="total-row"><td>実際の自己負担額</td><td class="text-right">¥87,430</td></tr>
<tr class="total-row"><td>払い戻し金額</td><td class="text-right">¥212,570</td></tr>
</tbody>
</table>
</div>
<div class="info-section">
<p class="info-title">📊 このシミュレーターの前提条件</p>
<p class="info-description">高額療養費制度は、1ヶ月間(同月内)の医療費が高額になった場合に、自己負担額を一定額に抑える制度です。<br>70歳未満の方を対象とし、所得区分に応じて自己負担上限額が異なります。</p>
<table>
<thead>
<tr>
<th>所得区分</th>
<th>年収目安</th>
<th class="text-right">自己負担上限額(月額)</th>
</tr>
</thead>
<tbody>
<tr>
<td>区分オ</td>
<td>約1,160万円以上</td>
<td class="text-right">252,600円+(医療費-842,000円)×1%</td>
</tr>
<tr>
<td>区分ア</td>
<td>約770万円〜約1,160万円</td>
<td class="text-right">167,400円+(医療費-558,000円)×1%</td>
</tr>
<tr>
<td>区分イ</td>
<td>約370万円〜約770万円</td>
<td class="text-right">80,100円+(医療費-267,000円)×1%</td>
</tr>
<tr>
<td>区分ウ</td>
<td>約210万円〜約370万円</td>
<td class="text-right">57,600円</td>
</tr>
<tr>
<td>区分エ</td>
<td>約156万円以下(住民税非課税)</td>
<td class="text-right">35,400円</td>
</tr>
</tbody>
</table>
<p class="info-note">※ 厚生労働省「高額療養費制度」令和6年度基準に基づく</p>
<p class="info-note">※ 医療費は保険適用前の総額(10割)で計算</p>
<p class="info-note">※ 同月内(1日〜末日)の医療費が対象</p>
<p class="info-note">※ 食費・差額ベッド代等は対象外</p>
</div>
<div class="disclaimer-section">
<p class="disclaimer-title">⚠️ ご利用上の注意</p>
<ul>
<li>このシミュレーターは70歳未満の方を対象としています</li>
<li>計算結果は目安であり、実際の払い戻し額は加入している健康保険組合等にご確認ください</li>
<li>同月内に複数の医療機関を受診した場合は、21,000円以上の自己負担額を合算できます</li>
<li>世帯合算や多数回該当による軽減措置は考慮していません</li>
<li>食費、差額ベッド代、先進医療費等は高額療養費制度の対象外です</li>
<li>実際の申請手続きについては、加入している健康保険組合等にお問い合わせください</li>
</ul>
</div>
<div style="text-align:right;margin-top:30px;color:#999;font-size:12px">Powered by <a href="https://minna-calc.com/" target="_blank" rel="noopener" style="color:#4a90e2;text-decoration:none">みんなのシミュレーター</a></div>
</div>
<!-- MSIM:HTML-END -->
<!-- MSIM:JS-START -->
<script>
(()=>{
"use strict";
const TOOL="kougaku-ryouyouhi-simulator";
const ROOT_SELECTOR=`.kougaku-simulator[data-tool="${TOOL}"]`;
const fmt=new Intl.NumberFormat("ja-JP",{style:"currency",currency:"JPY",minimumFractionDigits:0,maximumFractionDigits:0});
/**
* 高額療養費制度の自己負担上限額計算
*
* 【データソース】厚生労働省「高額療養費制度」令和6年度基準
*
* 【計算式】
* 区分オ(年収約1,160万円以上):252,600円+(医療費-842,000円)×1%
* 区分ア(年収約770万円〜約1,160万円):167,400円+(医療費-558,000円)×1%
* 区分イ(年収約370万円〜約770万円):80,100円+(医療費-267,000円)×1%
* 区分ウ(年収約210万円〜約370万円):57,600円(定額)
* 区分エ(住民税非課税):35,400円(定額)
*
* ※ 医療費は保険適用前の総額(10割)で計算
* ※ 70歳未満を対象
*/
const INCOME_CATEGORIES={
"high":{base:252600,threshold:842000,rate:0.01,label:"区分オ:年収約1,160万円以上"},
"middle-high":{base:167400,threshold:558000,rate:0.01,label:"区分ア:年収約770万円〜約1,160万円"},
"middle":{base:80100,threshold:267000,rate:0.01,label:"区分イ:年収約370万円〜約770万円"},
"middle-low":{base:57600,threshold:0,rate:0,label:"区分ウ:年収約210万円〜約370万円"},
"low":{base:35400,threshold:0,rate:0,label:"区分エ:住民税非課税(年収約156万円以下)"}
};
const registerInit=handler=>{
let pending=false;
const schedule=()=>{
if(pending)return;
pending=true;
requestAnimationFrame(()=>{
pending=false;
handler();
});
};
queueMicrotask(schedule);
if(document.readyState!=="loading")schedule();
document.addEventListener("DOMContentLoaded",schedule,{passive:true});
window.addEventListener("load",schedule,{passive:true});
document.addEventListener("readystatechange",()=>{
if(document.readyState==="interactive"){schedule();}
if(document.readyState==="complete"){schedule();}
},{passive:true});
new MutationObserver(schedule).observe(document.body,{childList:true,subtree:true});
};
function boot(root){
if(root.dataset.msimInitialized==="true")return;
root.dataset.msimInitialized="true";
const q=sel=>root.querySelector(sel);
const els={
inputs:root.querySelectorAll("input, select"),
incomeCategory:q('[data-ms-income-category]'),
medicalCost:q('[data-ms-medical-cost]'),
insuranceRate:q('[data-ms-insurance-rate]'),
limitAmount:q('[data-ms-limit-amount]'),
refundAmount:q('[data-ms-refund-amount]'),
breakdownTable:q('[data-ms-breakdown-table]')
};
function calculate(){
const category=els.incomeCategory.value;
const medicalCost=Number(els.medicalCost.value)||0;
const insuranceRate=Number(els.insuranceRate.value)||70;
const categoryData=INCOME_CATEGORIES[category];
const selfPaymentBeforeLimit=Math.floor(medicalCost*(100-insuranceRate)/100);
let limitAmount=categoryData.base;
if(categoryData.rate>0){
const excess=Math.max(0,medicalCost-categoryData.threshold);
limitAmount+=Math.floor(excess*categoryData.rate);
}
const actualSelfPayment=Math.min(selfPaymentBeforeLimit,limitAmount);
const refundAmount=Math.max(0,selfPaymentBeforeLimit-limitAmount);
return{
medicalCost:medicalCost,
insuranceRate:insuranceRate,
selfPaymentBeforeLimit:selfPaymentBeforeLimit,
limitAmount:limitAmount,
actualSelfPayment:actualSelfPayment,
refundAmount:refundAmount,
categoryLabel:categoryData.label,
breakdownRows:[
{label:"医療費総額(保険適用前)",amount:medicalCost},
{label:`保険適用後の自己負担額(${10-insuranceRate/10}割)`,amount:selfPaymentBeforeLimit},
{label:"高額療養費制度による上限額",amount:limitAmount}
]
};
}
function render(){
const result=calculate();
els.limitAmount.textContent=fmt.format(result.limitAmount);
els.refundAmount.textContent=fmt.format(result.refundAmount);
if(els.breakdownTable){
const rows=result.breakdownRows.map(item=>
`<tr><td>${item.label}</td><td class="text-right">${fmt.format(item.amount)}</td></tr>`
);
rows.push(`<tr class="total-row"><td>実際の自己負担額</td><td class="text-right">${fmt.format(result.actualSelfPayment)}</td></tr>`);
rows.push(`<tr class="total-row"><td>払い戻し金額</td><td class="text-right">${fmt.format(result.refundAmount)}</td></tr>`);
els.breakdownTable.innerHTML=rows.join("");
}
}
els.inputs.forEach(el=>el.addEventListener("input",render,{passive:true}));
render();
}
function init(){
document.querySelectorAll(ROOT_SELECTOR).forEach(boot);
}
registerInit(init);
})();
</script>
<!-- MSIM:JS-END -->
WordPress記事への詳しい埋め込み方は、以下の記事を参考にしてください。
あわせて読みたい
「みんなのシミュレーター」使い方ガイド
「みんなのシミュレーター」は、誰でも無料で使える計算ツール集です。 投資、ローン、年金など、お金に関するシミュレーションを簡単に行えます。 この記事では、サイ…
使い方
シミュレーターへの入力は3つの項目だけです。順番に選択・入力していけば、すぐに計算結果が表示されます。
まず年齢区分を選択します。70歳未満か70歳以上かで計算方法が変わるためです。
次に所得区分を選びます。年収や住民税の課税状況に応じて、6つの区分から該当するものを選択してください。
最後に医療費総額を入力します。病院の窓口で支払った3割負担の金額ではなく、医療費通知書に記載されている総額(10割分)を入力してください。
たとえば窓口で30万円支払った場合、総額は100万円です。この100万円を入力すると、正確な自己負担上限額が計算されます。
計算結果の見方
計算結果には4つの金額が表示されます。それぞれの意味を理解すれば、払い戻し申請がスムーズに進みます。
「自己負担上限額」は、あなたが実際に負担する最大金額です。この金額を超えた分は高額療養費として払い戻されます。
「窓口支払額」は、病院で実際に支払った金額(3割負担)を示します。「払い戻し金額」は、窓口支払額から自己負担上限額を引いた差額です。
「実質負担額」は、払い戻しを受けた後に最終的に負担する金額になります。この金額が、あなたの医療費の実際の負担額です。
たとえば窓口で30万円支払い、自己負担上限額が87,430円なら、払い戻し金額は212,570円です。実質負担額は87,430円になります。
活用方法
このシミュレーターは、医療費の支払い計画を立てる際に役立ちます。事前に負担額がわかれば、資金準備や申請手続きの準備ができます。
入院前の費用計画
入院が決まったら、予想される医療費を病院に確認します。その金額をシミュレーターに入力すれば、実際の負担額が事前にわかります。
たとえば150万円の医療費がかかる手術の場合、年収約370〜770万円の方なら実質負担は約87,430円です。窓口では45万円支払いますが、約36万円が払い戻されます。
限度額適用認定証の活用判断
限度額適用認定証を事前に取得すれば、窓口での支払いが自己負担上限額までになります。シミュレーション結果を見て、窓口支払額と上限額の差が大きい場合は認定証の取得を検討してください。
差額が10万円以上なら、認定証を取得する価値があります。事前に加入している健康保険に申請すれば、1〜2週間で発行されます。
複数月の医療費管理
長期入院や継続治療では、毎月の医療費を管理する必要があります。各月の医療費をシミュレーターで計算すれば、年間の総負担額が把握できます。
直近12か月以内に3回以上上限額に達した場合、4回目からは「多数回該当」として上限額がさらに下がります。たとえば年収約370〜770万円の方なら、44,400円まで下がります。
シミュレーターについて
使用データ
高額療養費シミュレーターでは、厚生労働省が定める公式の計算基準を使用しています。
計算基準の取得元は次の通りです。
| 項目 | 内容 |
|---|
| 自己負担上限額 | 厚生労働省「高額療養費制度を利用される皆さまへ」に基づく所得区分別の上限額 |
| 多数回該当 | 直近12か月以内に3回以上上限額に達した場合の軽減額 |
| 計算式 | 70歳未満・70歳以上それぞれの年齢区分別計算式 |
| 更新日 | 2024年4月時点の制度内容 |
計算方法
高額療養費の自己負担上限額は、年齢区分と所得区分によって異なる計算式を使用します。
70歳未満の場合、所得区分「区分ウ」(年収約370〜770万円)では次の計算式を使います。
自己負担上限額 = 80,100円 + (医療費総額 - 267,000円) × 1%
たとえば医療費総額が100万円なら、計算式は次のようになります。
80,100円 + (1,000,000円 - 267,000円) × 1% = 87,430円
窓口支払額は、医療費総額に自己負担割合(70歳未満は3割)を掛けて計算します。払い戻し金額は、窓口支払額から自己負担上限額を引いた差額です。
70歳以上の場合は、外来(個人ごと)と入院・世帯合算でそれぞれ上限額が設定されています。所得区分「一般」では、外来上限が18,000円、世帯合算上限が57,600円です。
多数回該当の判定では、直近12か月以内の高額療養費の支給回数をカウントします。3回以上該当した場合、4回目以降は軽減された上限額を適用します。
特徴
このシミュレーターは、厚生労働省の公式基準に基づいて計算します。所得区分ごとの正確な上限額が即座にわかります。
年齢区分(70歳未満・70歳以上)と所得区分6段階)を組み合わせた計算に対応しています。どの区分でも正確な金額が表示されます。
多数回該当による軽減額も考慮しています。長期治療で複数回申請する場合の負担軽減額がわかります。
注意事項
シミュレーションに含まれていない項目があります。
| 項目 | 説明 |
|---|
| 差額ベッド代 | 個室料金などの選定療養費は対象外 |
| 食事代 | 入院時の食事負担額は別途発生 |
| 保険適用外の治療 | 先進医療など保険が適用されない治療費は対象外 |
| 世帯合算 | 同一世帯の複数人の医療費合算には未対応 |
| 申請期限 | 診療月の翌月1日から2年以内の申請が必要 |
実際の医療費では食事代や差額ベッド代が発生するため、シミュレーション結果より総負担額は増えます。これらの費用は高額療養費の対象外です。
世帯合算を利用する場合は、加入している健康保険に直接確認してください。複数の医療機関を受診した場合の合算ルールは複雑です。
まとめ
高額療養費制度を使えば、医療費の自己負担額を大幅に抑えられます。このシミュレーターで事前に負担額を把握すれば、安心して治療に専念できます。
計算結果をもとに、限度額適用認定証の取得や払い戻し申請の準備を進めてください。医療費の不安を減らし、必要な治療を受けやすくなります。
わからないことがあれば、加入している健康保険の窓口に相談してください。制度の詳細や申請方法を丁寧に教えてもらえます。
コメント