Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add hannesill/m4 --skill mimic-apsiii-24hgit clone --depth 1 https://github.com/hannesill/m4Wrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/hannesill/m4/mimic-apsiii-24h)<a href="https://agentmods.dev/skills/hannesill/m4/mimic-apsiii-24h"><img src="https://agentmods.dev/badge/skills/hannesill/m4/mimic-apsiii-24h/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/hannesill/m4/mimic-apsiii-24h"><img src="https://agentmods.dev/badge/skills/hannesill/m4/mimic-apsiii-24h.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.08551 |
| Opus 5 | $0.00000 | $0.04276 |
| Sonnet 5 | $0.00000 | $0.01710 |
| Haiku 4.5 | $0.00000 | $0.00855 |
Grade A, and why
mimic-apsiii-24h scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
100% identical to mimic-apsiii-24h-raw — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 909 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Reference SQL (matched-content control)
The following block is the public reference SQL used to construct the ground truth for this task. It is provided verbatim, without procedural prose, to test whether matched task-relevant content alone explains the WITH-SKILL gain.
-- ------------------------------------------------------------------
-- Title: Acute Physiology Score III (APACHE III / APS III)
-- This query extracts the APS III score for the first 24 hours of
-- each ICU stay. APS III uses 16 components with a "worst from
-- normal" scoring philosophy and complex interaction effects.
-- ------------------------------------------------------------------
-- Reference for APACHE III:
-- Knaus WA, Wagner DP, Draper EA, et al. "The APACHE III
-- prognostic system. Risk prediction of hospital mortality for
-- critically ill hospitalized adults." Chest. 1991;100(6):1619-36.
-- Adapted from mimic-code apsiii.sql
--
-- DEVIATION from mimic-code: Fixed "worst from normal" tiebreaker equality
-- checks for 6 variables (resp_rate, hematocrit, wbc, sodium, albumin,
-- glucose). The mimic-code originals compare ABS(x_max - midpoint) to
-- itself — e.g. ABS(resp_rate_max - 19) = ABS(resp_rate_max - 19) — which
-- is trivially TRUE and short-circuits the real tie logic. We correct these
-- to compare max vs min: ABS(x_max - midpoint) = ABS(x_min - midpoint).
-- See individual FIX comments in the scorecomp CTE below.
WITH pa AS (
SELECT
ie.stay_id,
bg.charttime,
po2 AS pao2,
ROW_NUMBER() OVER (PARTITION BY ie.stay_id ORDER BY bg.po2 DESC) AS rn
FROM mimiciv_derived.bg AS bg
INNER JOIN mimiciv_icu.icustays AS ie
ON bg.hadm_id = ie.hadm_id
AND bg.charttime >= ie.intime
AND bg.charttime < LEAST(ie.outtime, ie.intime + INTERVAL '1' DAY)
LEFT JOIN mimiciv_derived.ventilation AS vd
ON ie.stay_id = vd.stay_id
AND bg.charttime >= vd.starttime
AND bg.charttime <= vd.endtime
AND vd.ventilation_status = 'InvasiveVent'
WHERE
vd.stay_id IS NULL
AND COALESCE(fio2, fio2_chartevents, 21) < 50
AND NOT bg.po2 IS NULL
AND bg.specimen = 'ART.'
), aa AS (
SELECT
ie.stay_id,
bg.charttime,
bg.aado2,
ROW_NUMBER() OVER (PARTITION BY ie.stay_id ORDER BY bg.aado2 DESC) AS rn
FROM mimiciv_derived.bg AS bg
INNER JOIN mimiciv_icu.icustays AS ie
ON bg.hadm_id = ie.hadm_id
AND bg.charttime >= ie.intime
AND bg.charttime < LEAST(ie.outtime, ie.intime + INTERVAL '1' DAY)
INNER JOIN mimiciv_derived.ventilation AS vd
ON ie.stay_id = vd.stay_id
AND bg.charttime >= vd.starttime
AND bg.charttime <= vd.endtime
AND vd.ventilation_status = 'InvasiveVent'
WHERE
NOT vd.stay_id IS NULL
AND COALESCE(fio2, fio2_chartevents) >= 50
AND NOT bg.aado2 IS NULL
AND bg.specimen = 'ART.'
), acidbase AS (
SELECT
ie.stay_id,
ph,
pco2 AS paco2,
CASE
WHEN ph IS NULL OR pco2 IS NULL
THEN NULL
WHEN ph < 7.20
THEN CASE WHEN pco2 < 50 THEN 12 ELSE 4 END
WHEN ph < 7.30
THEN CASE WHEN pco2 < 30 THEN 9 WHEN pco2 < 40 THEN 6 WHEN pco2 < 50 THEN 3 ELSE 2 END
WHEN ph < 7.35
THEN CASE WHEN pco2 < 30 THEN 9 WHEN pco2 < 45 THEN 0 ELSE 1 END
WHEN ph < 7.45
THEN CASE WHEN pco2 < 30 THEN 5 WHEN pco2 < 45 THEN 0 ELSE 1 END
WHEN ph < 7.50
THEN CASE WHEN pco2 < 30 THEN 5 WHEN pco2 < 35 THEN 0 WHEN pco2 < 45 THEN 2 ELSE 12 END
WHEN ph < 7.60
THEN CASE WHEN pco2 < 40 THEN 3 ELSE 12 END
ELSE CASE WHEN pco2 < 25 THEN 0 WHEN pco2 < 40 THEN 3 ELSE 12 END
END AS acidbase_score
FROM mimiciv_derived.bg AS bg
INNER JOIN mimiciv_icu.icustays AS ie
ON bg.hadm_id = ie.hadm_id
AND bg.charttime >= ie.intime
AND bg.charttime < LEAST(ie.outtime, ie.intime + INTERVAL '1' DAY)
WHERE
NOT ph IS NULL AND NOT pco2 IS NULL AND bg.specimen = 'ART.'
), acidbase_max AS (
SELECT
stay_id,
acidbase_score,
ph,
paco2,
ROW_NUMBER() OVER (PARTITION BY stay_id ORDER BY acidbase_score DESC) AS acidbase_rn
FROM acidbase
), arf AS (
SELECT
ie.stay_id,
CASE
WHEN labs.creatinine_max >= 1.5 AND uo.urineoutput < 410 AND icd.ckd = 0
THEN 1
ELSE 0
END AS arf
FROM mimiciv_icu.icustays AS ie
LEFT JOIN mimiciv_derived.first_day_urine_output AS uo
ON ie.stay_id = uo.stay_id
LEFT JOIN mimiciv_derived.first_day_lab AS labs
ON ie.stay_id = labs.stay_id
LEFT JOIN (
SELECT
hadm_id,
MAX(
CASE
WHEN icd_version = 9 AND SUBSTR(icd_code, 1, 4) IN ('5854', '5855', '5856')
THEN 1
WHEN icd_version = 10 AND SUBSTR(icd_code, 1, 4) IN ('N184', 'N185', 'N186')
THEN 1
ELSE 0
END
) AS ckd
FROM mimiciv_hosp.diagnoses_icd
GROUP BY
hadm_id
) AS icd
ON ie.hadm_id = icd.hadm_id
), vent AS (
SELECT
ie.stay_id,
MAX(CASE WHEN NOT v.stay_id IS NULL THEN 1 ELSE 0 END) AS vent
FROM mimiciv_icu.icustays AS ie
LEFT JOIN mimiciv_derived.ventilation AS v
ON ie.stay_id = v.stay_id
AND v.ventilation_status = 'InvasiveVent'
AND (
(
v.starttime >= ie.intime AND v.starttime <= ie.intime + INTERVAL '1' DAY
)
OR (
v.endtime >= ie.intime AND v.endtime <= ie.intime + INTERVAL '1' DAY
)
OR (
v.starttime <= ie.intime AND v.endtime >= ie.intime + INTERVAL '1' DAY
)
)
GROUP BY
ie.stay_id
), cohort AS (
SELECT
ie.subject_id,
ie.hadm_id,
ie.stay_id,
ie.intime,
ie.outtime,
vital.heart_rate_min,
vital.heart_rate_max,
vital.mbp_min,
vital.mbp_max,
vital.temperature_min,
vital.temperature_max,
vital.resp_rate_min,
vital.resp_rate_max,
pa.pao2,
aa.aado2,
ab.ph,
ab.paco2,
ab.acidbase_score,
labs.hematocrit_min,
labs.hematocrit_max,
labs.wbc_min,
labs.wbc_max,
labs.creatinine_min,
labs.creatinine_max,
labs.bun_min,
labs.bun_max,
labs.sodium_min,
labs.sodium_max,
labs.albumin_min,
labs.albumin_max,
labs.bilirubin_total_min AS bilirubin_min,
labs.bilirubin_total_max AS bilirubin_max,
CASE
WHEN labs.glucose_max IS NULL AND vital.glucose_max IS NULL
THEN NULL
WHEN labs.glucose_max IS NULL OR vital.glucose_max > labs.glucose_max
THEN vital.glucose_max
WHEN vital.glucose_max IS NULL OR labs.glucose_max > vital.glucose_max
THEN labs.glucose_max
ELSE labs.glucose_max
END AS glucose_max,
CASE
WHEN labs.glucose_min IS NULL AND vital.glucose_min IS NULL
THEN NULL
WHEN labs.glucose_min IS NULL OR vital.glucose_min < labs.glucose_min
THEN vital.glucose_min
WHEN vital.glucose_min IS NULL OR labs.glucose_min < vital.glucose_min
THEN labs.glucose_min
ELSE labs.glucose_min
END AS glucose_min,
vent.vent,
uo.urineoutput,
gcs.gcs_min AS mingcs,
gcs.gcs_motor,
gcs.gcs_verbal,
gcs.gcs_eyes,
gcs.gcs_unable,
arf.arf AS arf
FROM mimiciv_icu.icustays AS ie
INNER JOIN mimiciv_hosp.admissions AS adm
ON ie.hadm_id = adm.hadm_id
INNER JOIN mimiciv_hosp.patients AS pat
ON ie.subject_id = pat.subject_id
LEFT JOIN pa
ON ie.stay_id = pa.stay_id AND pa.rn = 1
LEFT JOIN aa
ON ie.stay_id = aa.stay_id AND aa.rn = 1
LEFT JOIN acidbase_max AS ab
ON ie.stay_id = ab.stay_id AND ab.acidbase_rn = 1
LEFT JOIN arf
ON ie.stay_id = arf.stay_id
LEFT JOIN vent
ON ie.stay_id = vent.stay_id
LEFT JOIN mimiciv_derived.first_day_gcs AS gcs
ON ie.stay_id = gcs.stay_id
LEFT JOIN mimiciv_derived.first_day_vitalsign AS vital
ON ie.stay_id = vital.stay_id
LEFT JOIN mimiciv_derived.first_day_urine_output AS uo
ON ie.stay_id = uo.stay_id
LEFT JOIN mimiciv_derived.first_day_lab AS labs
ON ie.stay_id = labs.stay_id
), score_min AS (
SELECT
cohort.subject_id,
cohort.hadm_id,
cohort.stay_id,
CASE
WHEN heart_rate_min IS NULL
THEN NULL
WHEN heart_rate_min < 40
THEN 8
WHEN heart_rate_min < 50
THEN 5
WHEN heart_rate_min < 100
THEN 0
WHEN heart_rate_min < 110
THEN 1
WHEN heart_rate_min < 120
THEN 5
WHEN heart_rate_min < 140
THEN 7
WHEN heart_rate_min < 155
THEN 13
WHEN heart_rate_min >= 155
THEN 17
END AS hr_score,
CASE
WHEN mbp_min IS NULL
THEN NULL
WHEN mbp_min < 40
THEN 23
WHEN mbp_min < 60
THEN 15
WHEN mbp_min < 70
THEN 7
WHEN mbp_min < 80
THEN 6
WHEN mbp_min < 100
THEN 0
WHEN mbp_min < 120
THEN 4
WHEN mbp_min < 130
THEN 7
WHEN mbp_min < 140
THEN 9
WHEN mbp_min >= 140
THEN 10
END AS mbp_score,
CASE
WHEN temperature_min IS NULL
THEN NULL
WHEN temperature_min < 33.0
THEN 20
WHEN temperature_min < 33.5
THEN 16
WHEN temperature_min < 34.0
THEN 13
WHEN temperature_min < 35.0
THEN 8
WHEN temperature_min < 36.0
THEN 2
WHEN temperature_min < 40.0
THEN 0
WHEN temperature_min >= 40.0
THEN 4
END AS temp_score,
CASE
WHEN resp_rate_min IS NULL
THEN NULL
WHEN vent = 1 AND resp_rate_min < 14
THEN 0
WHEN resp_rate_min < 6
THEN 17
WHEN resp_rate_min < 12
THEN 8
WHEN resp_rate_min < 14
THEN 7
WHEN resp_rate_min < 25
THEN 0
WHEN resp_rate_min < 35
THEN 6
WHEN resp_rate_min < 40
THEN 9
WHEN resp_rate_min < 50
THEN 11
WHEN resp_rate_min >= 50
THEN 18
END AS resp_rate_score,
CASE
WHEN hematocrit_min IS NULL
THEN NULL
WHEN hematocrit_min < 41.0
THEN 3
WHEN hematocrit_min < 50.0
THEN 0
WHEN hematocrit_min >= 50.0
THEN 3
END AS hematocrit_score,
CASE
WHEN wbc_min IS NULL
THEN NULL
WHEN wbc_min < 1.0
THEN 19
WHEN wbc_min < 3.0
THEN 5
WHEN wbc_min < 20.0
THEN 0
WHEN wbc_min < 25.0
THEN 1
WHEN wbc_min >= 25.0
THEN 5
END AS wbc_score,
CASE
WHEN creatinine_min IS NULL
THEN NULL
WHEN arf = 1 AND creatinine_min < 1.5
THEN 0
WHEN arf = 1 AND creatinine_min >= 1.5
THEN 10
WHEN creatinine_min < 0.5
THEN 3
WHEN creatinine_min < 1.5
THEN 0
WHEN creatinine_min < 1.95
THEN 4
WHEN creatinine_min >= 1.95
THEN 7
END AS creatinine_score,
CASE
WHEN bun_min IS NULL
THEN NULL
WHEN bun_min < 17.0
THEN 0
WHEN bun_min < 20.0
THEN 2
WHEN bun_min < 40.0
THEN 7
WHEN bun_min < 80.0
THEN 11
WHEN bun_min >= 80.0
THEN 12
END AS bun_score,
CASE
WHEN sodium_min IS NULL
THEN NULL
WHEN sodium_min < 120
THEN 3
WHEN sodium_min < 135
THEN 2
WHEN sodium_min < 155
THEN 0
WHEN sodium_min >= 155
THEN 4
END AS sodium_score,
CASE
WHEN albumin_min IS NULL
THEN NULL
WHEN albumin_min < 2.0
THEN 11
WHEN albumin_min < 2.5
THEN 6
WHEN albumin_min < 4.5
THEN 0
WHEN albumin_min >= 4.5
THEN 4
END AS albumin_score,
CASE
WHEN bilirubin_min IS NULL
THEN NULL
WHEN bilirubin_min < 2.0
THEN 0
WHEN bilirubin_min < 3.0
THEN 5
WHEN bilirubin_min < 5.0
THEN 6
WHEN bilirubin_min < 8.0
THEN 8
WHEN bilirubin_min >= 8.0
THEN 16
END AS bilirubin_score,
CASE
WHEN glucose_min IS NULL
THEN NULL
WHEN glucose_min < 40
THEN 8
WHEN glucose_min < 60
THEN 9
WHEN glucose_min < 200
THEN 0
WHEN glucose_min < 350
THEN 3
WHEN glucose_min >= 350
THEN 5
END AS glucose_score
FROM cohort
), score_max AS (
SELECT
cohort.subject_id,
cohort.hadm_id,
cohort.stay_id,
CASE
WHEN heart_rate_max IS NULL
THEN NULL
WHEN heart_rate_max < 40
THEN 8
WHEN heart_rate_max < 50
THEN 5
WHEN heart_rate_max < 100
THEN 0
WHEN heart_rate_max < 110
THEN 1
WHEN heart_rate_max < 120
THEN 5
WHEN heart_rate_max < 140
THEN 7
WHEN heart_rate_max < 155
THEN 13
WHEN heart_rate_max >= 155
THEN 17
END AS hr_score,
CASE
WHEN mbp_max IS NULL
THEN NULL
WHEN mbp_max < 40
THEN 23
WHEN mbp_max < 60
THEN 15
WHEN mbp_max < 70
THEN 7
WHEN mbp_max < 80
THEN 6
WHEN mbp_max < 100
THEN 0
WHEN mbp_max < 120
THEN 4
WHEN mbp_max < 130
THEN 7
WHEN mbp_max < 140
THEN 9
WHEN mbp_max >= 140
THEN 10
END AS mbp_score,
CASE
WHEN temperature_max IS NULL
THEN NULL
WHEN temperature_max < 33.0
THEN 20
WHEN temperature_max < 33.5
THEN 16
WHEN temperature_max < 34.0
THEN 13
WHEN temperature_max < 35.0
THEN 8
WHEN temperature_max < 36.0
THEN 2
WHEN temperature_max < 40.0
THEN 0
WHEN temperature_max >= 40.0
THEN 4
END AS temp_score,
CASE
WHEN resp_rate_max IS NULL
THEN NULL
WHEN vent = 1 AND resp_rate_max < 14
THEN 0
WHEN resp_rate_max < 6
THEN 17
WHEN resp_rate_max < 12
THEN 8
WHEN resp_rate_max < 14
THEN 7
WHEN resp_rate_max < 25
THEN 0
WHEN resp_rate_max < 35
THEN 6
WHEN resp_rate_max < 40
THEN 9
WHEN resp_rate_max < 50
THEN 11
WHEN resp_rate_max >= 50
THEN 18
END AS resp_rate_score,
CASE
WHEN hematocrit_max IS NULL
THEN NULL
WHEN hematocrit_max < 41.0
THEN 3
WHEN hematocrit_max < 50.0
THEN 0
WHEN hematocrit_max >= 50.0
THEN 3
END AS hematocrit_score,
CASE
WHEN wbc_max IS NULL
THEN NULL
WHEN wbc_max < 1.0
THEN 19
WHEN wbc_max < 3.0
THEN 5
WHEN wbc_max < 20.0
THEN 0
WHEN wbc_max < 25.0
THEN 1
WHEN wbc_max >= 25.0
THEN 5
END AS wbc_score,
CASE
WHEN creatinine_max IS NULL
THEN NULL
WHEN arf = 1 AND creatinine_max < 1.5
THEN 0
WHEN arf = 1 AND creatinine_max >= 1.5
THEN 10
WHEN creatinine_max < 0.5
THEN 3
WHEN creatinine_max < 1.5
THEN 0
WHEN creatinine_max < 1.95
THEN 4
WHEN creatinine_max >= 1.95
THEN 7
END AS creatinine_score,
CASE
WHEN bun_max IS NULL
THEN NULL
WHEN bun_max < 17.0
THEN 0
WHEN bun_max < 20.0
THEN 2
WHEN bun_max < 40.0
THEN 7
WHEN bun_max < 80.0
THEN 11
WHEN bun_max >= 80.0
THEN 12
END AS bun_score,
CASE
WHEN sodium_max IS NULL
THEN NULL
WHEN sodium_max < 120
THEN 3
WHEN sodium_max < 135
THEN 2
WHEN sodium_max < 155
THEN 0
WHEN sodium_max >= 155
THEN 4
END AS sodium_score,
CASE
WHEN albumin_max IS NULL
THEN NULL
WHEN albumin_max < 2.0
THEN 11
WHEN albumin_max < 2.5
THEN 6
WHEN albumin_max < 4.5
THEN 0
WHEN albumin_max >= 4.5
THEN 4
END AS albumin_score,
CASE
WHEN bilirubin_max IS NULL
THEN NULL
WHEN bilirubin_max < 2.0
THEN 0
WHEN bilirubin_max < 3.0
THEN 5
WHEN bilirubin_max < 5.0
THEN 6
WHEN bilirubin_max < 8.0
THEN 8
WHEN bilirubin_max >= 8.0
THEN 16
END AS bilirubin_score,
CASE
WHEN glucose_max IS NULL
THEN NULL
WHEN glucose_max < 40
THEN 8
WHEN glucose_max < 60
THEN 9
WHEN glucose_max < 200
THEN 0
WHEN glucose_max < 350
THEN 3
WHEN glucose_max >= 350
THEN 5
END AS glucose_score
FROM cohort
), scorecomp AS (
SELECT
co.*,
CASE
WHEN heart_rate_max IS NULL
THEN NULL
WHEN ABS(heart_rate_max - 75) > ABS(heart_rate_min - 75)
THEN smax.hr_score
WHEN ABS(heart_rate_max - 75) < ABS(heart_rate_min - 75)
THEN smin.hr_score
WHEN ABS(heart_rate_max - 75) = ABS(heart_rate_min - 75)
AND smax.hr_score >= smin.hr_score
THEN smax.hr_score
WHEN ABS(heart_rate_max - 75) = ABS(heart_rate_min - 75)
AND smax.hr_score < smin.hr_score
THEN smin.hr_score
END AS hr_score,
CASE
WHEN mbp_max IS NULL
THEN NULL
WHEN ABS(mbp_max - 90) > ABS(mbp_min - 90)
THEN smax.mbp_score
WHEN ABS(mbp_max - 90) < ABS(mbp_min - 90)
THEN smin.mbp_score
WHEN ABS(mbp_max - 90) = ABS(mbp_min - 90) AND smax.mbp_score >= smin.mbp_score
THEN smax.mbp_score
WHEN ABS(mbp_max - 90) = ABS(mbp_min - 90) AND smax.mbp_score < smin.mbp_score
THEN smin.mbp_score
END AS mbp_score,
CASE
WHEN temperature_max IS NULL
THEN NULL
WHEN ABS(temperature_max - 38) > ABS(temperature_min - 38)
THEN smax.temp_score
WHEN ABS(temperature_max - 38) < ABS(temperature_min - 38)
THEN smin.temp_score
WHEN ABS(temperature_max - 38) = ABS(temperature_min - 38)
AND smax.temp_score >= smin.temp_score
THEN smax.temp_score
WHEN ABS(temperature_max - 38) = ABS(temperature_min - 38)
AND smax.temp_score < smin.temp_score
THEN smin.temp_score
END AS temp_score,
CASE
WHEN resp_rate_max IS NULL
THEN NULL
WHEN ABS(resp_rate_max - 19) > ABS(resp_rate_min - 19)
THEN smax.resp_rate_score
WHEN ABS(resp_rate_max - 19) < ABS(resp_rate_min - 19)
THEN smin.resp_rate_score
-- FIX: mimic-code has ABS(resp_rate_max - 19) = ABS(resp_rate_max - 19)
-- which is always TRUE (self-comparison). Corrected to compare max vs min.
WHEN ABS(resp_rate_max - 19) = ABS(resp_rate_min - 19)
AND smax.resp_rate_score >= smin.resp_rate_score
THEN smax.resp_rate_score
WHEN ABS(resp_rate_max - 19) = ABS(resp_rate_min - 19)
AND smax.resp_rate_score < smin.resp_rate_score
THEN smin.resp_rate_score
END AS resp_rate_score,
CASE
WHEN hematocrit_max IS NULL
THEN NULL
WHEN ABS(hematocrit_max - 45.5) > ABS(hematocrit_min - 45.5)
THEN smax.hematocrit_score
WHEN ABS(hematocrit_max - 45.5) < ABS(hematocrit_min - 45.5)
THEN smin.hematocrit_score
-- FIX: mimic-code has ABS(hematocrit_max - 45.5) = ABS(hematocrit_max - 45.5)
-- which is always TRUE (self-comparison). Corrected to compare max vs min.
WHEN ABS(hematocrit_max - 45.5) = ABS(hematocrit_min - 45.5)
AND smax.hematocrit_score >= smin.hematocrit_score
THEN smax.hematocrit_score
WHEN ABS(hematocrit_max - 45.5) = ABS(hematocrit_min - 45.5)
AND smax.hematocrit_score < smin.hematocrit_score
THEN smin.hematocrit_score
END AS hematocrit_score,
CASE
WHEN wbc_max IS NULL
THEN NULL
WHEN ABS(wbc_max - 11.5) > ABS(wbc_min - 11.5)
THEN smax.wbc_score
WHEN ABS(wbc_max - 11.5) < ABS(wbc_min - 11.5)
THEN smin.wbc_score
-- FIX: mimic-code has ABS(wbc_max - 11.5) = ABS(wbc_max - 11.5)
-- which is always TRUE (self-comparison). Corrected to compare max vs min.
WHEN ABS(wbc_max - 11.5) = ABS(wbc_min - 11.5) AND smax.wbc_score >= smin.wbc_score
THEN smax.wbc_score
WHEN ABS(wbc_max - 11.5) = ABS(wbc_min - 11.5) AND smax.wbc_score < smin.wbc_score
THEN smin.wbc_score
END AS wbc_score,
CASE
WHEN creatinine_max IS NULL
THEN NULL
WHEN arf = 1
THEN smax.creatinine_score
WHEN ABS(creatinine_max - 1) > ABS(creatinine_min - 1)
THEN smax.creatinine_score
WHEN ABS(creatinine_max - 1) < ABS(creatinine_min - 1)
THEN smin.creatinine_score
WHEN smax.creatinine_score >= smin.creatinine_score
THEN smax.creatinine_score
WHEN smax.creatinine_score < smin.creatinine_score
THEN smin.creatinine_score
END AS creatinine_score,
CASE WHEN bun_max IS NULL THEN NULL ELSE smax.bun_score END AS bun_score,
CASE
WHEN sodium_max IS NULL
THEN NULL
WHEN ABS(sodium_max - 145.5) > ABS(sodium_min - 145.5)
THEN smax.sodium_score
WHEN ABS(sodium_max - 145.5) < ABS(sodium_min - 145.5)
THEN smin.sodium_score
-- FIX: mimic-code has ABS(sodium_max - 145.5) = ABS(sodium_max - 145.5)
-- which is always TRUE (self-comparison). Corrected to compare max vs min.
WHEN ABS(sodium_max - 145.5) = ABS(sodium_min - 145.5)
AND smax.sodium_score >= smin.sodium_score
THEN smax.sodium_score
WHEN ABS(sodium_max - 145.5) = ABS(sodium_min - 145.5)
AND smax.sodium_score < smin.sodium_score
THEN smin.sodium_score
END AS sodium_score,
CASE
WHEN albumin_max IS NULL
THEN NULL
WHEN ABS(albumin_max - 3.5) > ABS(albumin_min - 3.5)
THEN smax.albumin_score
WHEN ABS(albumin_max - 3.5) < ABS(albumin_min - 3.5)
THEN smin.albumin_score
-- FIX: mimic-code has ABS(albumin_max - 3.5) = ABS(albumin_max - 3.5)
-- which is always TRUE (self-comparison). Corrected to compare max vs min.
WHEN ABS(albumin_max - 3.5) = ABS(albumin_min - 3.5)
AND smax.albumin_score >= smin.albumin_score
THEN smax.albumin_score
WHEN ABS(albumin_max - 3.5) = ABS(albumin_min - 3.5)
AND smax.albumin_score < smin.albumin_score
THEN smin.albumin_score
END AS albumin_score,
CASE WHEN bilirubin_max IS NULL THEN NULL ELSE smax.bilirubin_score END AS bilirubin_score,
CASE
WHEN glucose_max IS NULL
THEN NULL
WHEN ABS(glucose_max - 130) > ABS(glucose_min - 130)
THEN smax.glucose_score
WHEN ABS(glucose_max - 130) < ABS(glucose_min - 130)
THEN smin.glucose_score
-- FIX: mimic-code has ABS(glucose_max - 130) = ABS(glucose_max - 130)
-- which is always TRUE (self-comparison). Corrected to compare max vs min.
WHEN ABS(glucose_max - 130) = ABS(glucose_min - 130)
AND smax.glucose_score >= smin.glucose_score
THEN smax.glucose_score
WHEN ABS(glucose_max - 130) = ABS(glucose_min - 130)
AND smax.glucose_score < smin.glucose_score
THEN smin.glucose_score
END AS glucose_score,
CASE
WHEN urineoutput IS NULL
THEN NULL
WHEN urineoutput < 400
THEN 15
WHEN urineoutput < 600
THEN 8
WHEN urineoutput < 900
THEN 7
WHEN urineoutput < 1500
THEN 5
WHEN urineoutput < 2000
THEN 4
WHEN urineoutput < 4000
THEN 0
WHEN urineoutput >= 4000
THEN 1
END AS uo_score,
CASE
WHEN gcs_unable = 1
THEN 0
WHEN gcs_eyes = 1
THEN CASE
WHEN gcs_verbal = 1 AND gcs_motor IN (1, 2)
THEN 48
WHEN gcs_verbal = 1 AND gcs_motor IN (3, 4)
THEN 33
WHEN gcs_verbal = 1 AND gcs_motor IN (5, 6)
THEN 16
WHEN gcs_verbal IN (2, 3) AND gcs_motor IN (1, 2)
THEN 29
WHEN gcs_verbal IN (2, 3) AND gcs_motor IN (3, 4)
THEN 24
WHEN gcs_verbal IN (2, 3) AND gcs_motor >= 5
THEN NULL
WHEN gcs_verbal >= 4
THEN NULL
END
WHEN gcs_eyes > 1
THEN CASE
WHEN gcs_verbal = 1 AND gcs_motor IN (1, 2)
THEN 29
WHEN gcs_verbal = 1 AND gcs_motor IN (3, 4)
THEN 24
WHEN gcs_verbal = 1 AND gcs_motor IN (5, 6)
THEN 15
WHEN gcs_verbal IN (2, 3) AND gcs_motor IN (1, 2)
THEN 29
WHEN gcs_verbal IN (2, 3) AND gcs_motor IN (3, 4)
THEN 24
WHEN gcs_verbal IN (2, 3) AND gcs_motor = 5
THEN 13
WHEN gcs_verbal IN (2, 3) AND gcs_motor = 6
THEN 10
WHEN gcs_verbal = 4 AND gcs_motor IN (1, 2, 3, 4)
THEN 13
WHEN gcs_verbal = 4 AND gcs_motor = 5
THEN 8
WHEN gcs_verbal = 4 AND gcs_motor = 6
THEN 3
WHEN gcs_verbal = 5 AND gcs_motor IN (1, 2, 3, 4, 5)
THEN 3
WHEN gcs_verbal = 5 AND gcs_motor = 6
THEN 0
END
ELSE NULL
END AS gcs_score,
CASE
WHEN pao2 IS NULL AND aado2 IS NULL
THEN NULL
WHEN NOT pao2 IS NULL
THEN CASE WHEN pao2 < 50 THEN 15 WHEN pao2 < 70 THEN 5 WHEN pao2 < 80 THEN 2 ELSE 0 END
WHEN NOT aado2 IS NULL
THEN CASE
WHEN aado2 < 100
THEN 0
WHEN aado2 < 250
THEN 7
WHEN aado2 < 350
THEN 9
WHEN aado2 < 500
THEN 11
WHEN aado2 >= 500
THEN 14
ELSE 0
END
END AS pao2_aado2_score
FROM cohort AS co
LEFT JOIN score_min AS smin
ON co.stay_id = smin.stay_id
LEFT JOIN score_max AS smax
ON co.stay_id = smax.stay_id
), score AS (
SELECT
s.*,
COALESCE(hr_score, 0) + COALESCE(mbp_score, 0) + COALESCE(temp_score, 0) + COALESCE(resp_rate_score, 0) + COALESCE(pao2_aado2_score, 0) + COALESCE(hematocrit_score, 0) + COALESCE(wbc_score, 0) + COALESCE(creatinine_score, 0) + COALESCE(uo_score, 0) + COALESCE(bun_score, 0) + COALESCE(sodium_score, 0) + COALESCE(albumin_score, 0) + COALESCE(bilirubin_score, 0) + COALESCE(glucose_score, 0) + COALESCE(acidbase_score, 0) + COALESCE(gcs_score, 0) AS apsiii
FROM scorecomp AS s
)
SELECT
ie.subject_id, ie.hadm_id, ie.stay_id
, apsiii
-- DEVIATION from mimic-code: COALESCE component scores to 0.
-- See sofa-24h.sql for rationale.
, COALESCE(hr_score, 0) AS hr_score
, COALESCE(mbp_score, 0) AS mbp_score
, COALESCE(temp_score, 0) AS temp_score
, COALESCE(resp_rate_score, 0) AS resp_rate_score
, COALESCE(pao2_aado2_score, 0) AS pao2_aado2_score
, COALESCE(hematocrit_score, 0) AS hematocrit_score
, COALESCE(wbc_score, 0) AS wbc_score
, COALESCE(creatinine_score, 0) AS creatinine_score
, COALESCE(uo_score, 0) AS uo_score
, COALESCE(bun_score, 0) AS bun_score
, COALESCE(sodium_score, 0) AS sodium_score
, COALESCE(albumin_score, 0) AS albumin_score
, COALESCE(bilirubin_score, 0) AS bilirubin_score
, COALESCE(glucose_score, 0) AS glucose_score
, COALESCE(acidbase_score, 0) AS acidbase_score
, COALESCE(gcs_score, 0) AS gcs_score
FROM mimiciv_icu.icustays AS ie
LEFT JOIN score AS s
ON ie.stay_id = s.stay_id
;
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 909 lines · 0 tokens per session scan A 07be5e7faaaf
mimic-apsiii-24h is a skill published in the GitHub repository hannesill/m4 (43 stars, last pushed 1mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 8,551 tokens. A static security scan graded it A with 0 findings. It is 100% identical to mimic-apsiii-24h-raw, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
arbor-agent-orchestrator
Top-level controller for recreating the open-source AutoResearch workflow as a suite of skills. Use when the user asks to run, emulate, extract, validate, or refine Arbor/AutoResearch behavior, especially when a coordinator must load phase skills for setup, ideation, executors, merge evaluation, novelty search…
cqrs-implementation
Implement Command Query Responsibility Segregation for scalable architectures. Use when separating read and write models, optimizing query performance, or building event-sourced systems.
projection-patterns
Build read models and projections from event streams. Use when implementing CQRS read sides, building materialized views, or optimizing query performance in event-sourced systems.
migration-review
Review database migration files when a change adds or modifies paths under migrations/. Use it before merge to collect forward, rollback, locking, and data-safety evidence.
azure-resource-manager-postgresql-dotnet
Azure PostgreSQL Flexible Server SDK for .NET. Database management for PostgreSQL Flexible Server deployments. Use for creating servers, databases, firewall rules, configurations, backups, and high availability. Triggers: "PostgreSQL", "PostgreSqlFlexibleServer", "PostgreSQL Flexible Server", "Azure Database for…
azure-data-tables-java
Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.