作者HWSH (光的夜生活)
看板Statistics
标题[程式] SAS 健保资料库 筛选病人逻辑写法
时间Wed Apr 11 09:47:46 2018
[软体程式类别]:
SAS
[程式问题]:
逻辑
[软体熟悉度]:
熟悉(DoLoop & macro)
[问题叙述]:
各位统神大大早安,小弟目前在研究健保资料库
研究对象是"服用特定药物连续三个月以上的病人"
cd跟oo档接好了,服用特定药物也找出来了,约1400万笔资料(日期,id变数都有)
目前卡在 "至少连续三个月出现" 这个条件不知道要怎麽写
谢谢各位大大提供一下想法
若能成功启发我台北地区一杯星巴克特大美式回报:)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 203.71.94.11
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1523411269.A.B67.html
1F:推 oolala: proc sql 做 fuzzy matching? 可能要跑很久..? 04/11 12:11
2F:推 imsoim: 简单一点的话,最初和最後时间间隔超过3个月,并且当中任 04/11 19:10
3F:→ imsoim: 两个连续时间间隔不超过3个月 04/11 19:10
4F:推 leschu: 要先定义连续 如果中断几天以上就不算连续 即判定不连续 04/12 00:14
5F:→ leschu: 可用每次开方日期跟处方天数加可容许天数 把每段衔接好 看 04/12 00:14
6F:→ leschu: 是否有满三个月 04/12 00:14
7F:→ Samlee: 可考虑用data step里的retain 去检查本次就医跟前次就医 04/12 13:52
8F:→ Samlee: 之间的时间差 有超过一定天数的给个tag 再用sql把有tag的 04/12 13:53
9F:→ Samlee: 病人列出并移除分析资料群 04/12 13:53
10F:推 anniecs: 可以从终点着手,先定义停药(多久没有该药纪录就视为停药 04/19 20:25
11F:→ anniecs: ),这样就可以用终点日减去起点日,看有没有超过3个月 04/19 20:26
12F:→ anniecs: (3个月天数=365/12*3) 04/19 20:26
13F:→ anniecs: 照字面也有最简单的解读,例如456月有就算是连续三个月 04/19 20:37
14F:→ anniecs: 这个做法就会相对简单很多XD 把年月依序coding成新序号 04/19 20:39
15F:→ anniecs: 每一个月只保留一笔,将序号相差2以下的资料inner join 04/19 20:41
16F:→ anniecs: 後并加总,等於3就表示连续三个月都有开到药 04/19 20:41
17F:→ anniecs: 但实务上会有bias,因为病人有时月尾就先来领下个月的药 04/19 20:43