作者shga (我爱慢慢跑)
看板Statistics
标题[程式] SAS 用药日期重复计算
时间Wed Jul 15 14:16:57 2015
[软体程式类别]:
SAS
[程式问题]:
资料处理
[软体熟悉度]:
中(3个月到1年)
[问题叙述]:
该问题是健保资料库的用药天数重复问题。
先简单说明问题
data output;
set output;
array run{10} day1 - day10;
run;
ID start_date end_date day1 day2 day3 day4 day5 day6 day7 day8 day9 day10
A 1 5
A 3 8
第一笔起始日期为1结束日期为5,但我该如何在day1-day5填上1的资料。
同样第二笔资料,我该如何在day3-day8填上1的资料说。
以下为详细说明
ID 就医日期 给药天数 就医日期数值 结束日期数值 上次结束日期数值
A 20061002 30 17072 17101 .
A 20061003 30 17076 17105 17101
A 20061008 30 17082 17111 17105
就医日期数值是将就医日期转换成数值,
结束日期为就医日期数值加上给药天数。
一般来说,用药天数重复,可将该次的结束日期数值,
与下次的就医日期与结束日期运算,可以使用LAG,DIF,IFN 器计算。
但资料库有时候存在很多例外。
例如该病人1002领药30天,1003又领药30天,1008又领药30天。
的确是呈现药物滥用,目前想要计算重复用药天数。
例如该病人的用药天数如下: 後方切时间点以方便说明。
第一笔 17072-17101 : 17072 - 17076 - 17082 - 17101
第二笔 17076-17105 : 17076 - 17082 - 17101 - 17105
第三笔 17082-17111 : 17082 - 17101 - 17105 -17111
由上面可知道,在17076-17081,这6天是两笔资料重复。
17082-17101,这20天是三笔资料重复。
17102-17105,这4天是两笔资料重复。
如果不算重复次数,可以知道在这三笔资料总共有30天重复用药天数。
请问这要该如何计算呢?
[程式范例]:
目前想到比较简单的方法是
由於我全部的追踪时间是11年,因此先往右开11年 (共4701的栏位 day14976 -day18992。
第一笔资料为17072-17101 ,就day17072-day17101都补上1。
第二笔资料为17076-17105,就day17176-day17105都补上1。
..
之後再加总某个日期栏位,如果大於1,表示当天有资料重复。
不知道各位是否有其他建议方式? 再请指教,谢谢。
-----------------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.250.55.184
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1436941019.A.018.html
※ 编辑: shga (111.250.55.184), 07/15/2015 14:17:47
1F:推 anniecs: 纯粹路过提醒,门诊的给药天数会高估,以当次看诊开的所 07/16 01:52
2F:→ anniecs: 有药中最多天数当做给药天数。可能要留意这部份~ 07/16 01:52
3F:推 realtemper: 健保资料库已经很大,再开那麽多栏实际上应该不可行 07/16 02:39
4F:推 anniecs: 原po的想法基本上可行,我也这麽处理过,但如同楼上讲的 07/16 14:13
5F:→ anniecs: ,栏位太多,跑起来很慢。但我觉得更重要的是探讨几种可 07/16 14:13
6F:→ anniecs: 能性:1. 想看的药常与慢性药一起给,给药天数就是慢性 07/16 14:13
7F:→ anniecs: 药而非探讨的药。2. 住院资料就更高估了,无法以住院天 07/16 14:13
8F:→ anniecs: 数当吃药起迄日。3. 病人会在药吃完前先回诊拿药衔接。4. 07/16 14:13
9F:→ anniecs: 同一成份的药10mg开10天跟5mg开20天,总剂量不变。是否 07/16 14:13
10F:→ anniecs: 用DDD取代开药天数。 07/16 14:13