mimic提取相关的实验室检查信息

创建表

-- 步骤1:创建表存储符合条件的subject_id(避免使用关键字is作为表名,改用stroke_patients_subjects)
CREATE TABLE stroke_patients_subjects AS
SELECT DISTINCT di.subject_id
FROM mimiciv_hosp.diagnoses_icd di
WHERE 
  (di.icd_version = 9 AND di.icd_code LIKE '434%')  -- ICD-9:缺血性卒中相关编码
  OR 
  (di.icd_version = 10 AND di.icd_code LIKE 'I63%');  -- ICD-10:缺血性卒中相关编码(修正为I63%-- 步骤2:从创建的表中查询subject_id,可关联patients表获取详细
SELECT 
  s.subject_id,
  p.gender,
  p.anchor_year,  -- 出生日期(脱敏后)
  p.dod   -- 死亡日期(脱敏后,NULL表示存活)
FROM 
  stroke_patients_subjects s
INNER JOIN mimiciv_hosp.patients p 
  ON s.subject_id = p.subject_id
ORDER BY 
  s.subject_id;

查询成功后,添加新的列和字段

-- 步骤1:为stroke_patients_subjects表添加新字段(需匹配patients表字段的数据类型)
ALTER TABLE stroke_patients_subjects
ADD COLUMN gender VARCHAR(5),  -- 性别(patients表中为'F'/'M'等,字符型)
ADD COLUMN anchor_year INTEGER,  -- 基准年份(脱敏后的年份,整数型)
ADD COLUMN dod TIMESTAMPTZ;  -- 死亡时间(时间戳类型,带时区)


-- 步骤2:通过subject_id关联patients表,更新新添加的字段
UPDATE stroke_patients_subjects s
SET 
  gender = p.gender,
  anchor_year = p.anchor_year,
  dod = p.dod
FROM mimiciv_hosp.patients p
WHERE s.subject_id = p.subject_id;  -- 关联条件:患者ID匹配


-- 验证:查询更新后的表
SELECT * FROM stroke_patients_subjects ORDER BY subject_id;



ALTER TABLE stroke_patients_subjects
ADD COLUMN icd_code VARCHAR(5),  
ADD COLUMN hadm_id INTEGER, 

-- 向stroke_patients_subjects表添加符合条件的记录(避免重复)
INSERT INTO stroke_patients_subjects (subject_id, hadm_id, icd_code)
SELECT DISTINCT 
  di.subject_id,
  di.hadm_id,
  di.icd_code
FROM mimiciv_hosp.diagnoses_icd di
-- 筛选条件:ICD-9 434% 或 ICD-10 I63%
WHERE 
  (di.icd_version = 9 AND di.icd_code LIKE '434%')
  OR 
  (di.icd_version = 10 AND di.icd_code LIKE 'I63%')
-- 去重逻辑:仅插入表中不存在的记录(避免重复)
AND NOT EXISTS (
  SELECT 1 
  FROM stroke_patients_subjects s
  WHERE 
    s.subject_id = di.subject_id 
    AND s.hadm_id = di.hadm_id 
    AND s.icd_code = di.icd_code
);

-- 验证:查询表中所有记录,确认新增记录已添加
SELECT * FROM stroke_patients_subjects 
ORDER BY subject_id, hadm_id;

查询卒中患者实验室检查数量

SELECT 'ascites_chemistry' AS test_type, 
​       (SELECT COUNT(*) 
​        FROM stroke_patients_subjects 
​        WHERE hadm_id IN (SELECT hadm_id FROM ascites_chemistry)) AS patient_count
UNION ALL
SELECT 'ascites_hematology' AS test_type, 
​       (SELECT COUNT(*) 
​        FROM stroke_patients_subjects 
​        WHERE hadm_id IN (SELECT hadm_id FROM ascites_hematology)) AS patient_count
UNION ALL
SELECT 'blood_blood_gas' AS test_type, 
​       (SELECT COUNT(*) 
​        FROM stroke_patients_subjects 
​        WHERE hadm_id IN (SELECT hadm_id FROM blood_blood_gas)) AS patient_count
UNION ALL
SELECT 'blood_chemistry' AS test_type, 
​       (SELECT COUNT(*) 
​        FROM stroke_patients_subjects 
​        WHERE hadm_id IN (SELECT hadm_id FROM blood_chemistry)) AS patient_count
UNION ALL
SE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值