作者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/m.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