统计211

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3674|回复: 1
打印 上一主题 下一主题

SAS data 步骤中 如何书写循环

[复制链接]
跳转到指定楼层
1
发表于 2013-11-21 10:49:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题是:
病案首页的手术编码有7个。一台手术的手术码可能由几个手术(ssjczbm1 ,ssjczbm2,ssjczbm3,ssjczbm4,ssjczbm5,ssjczbm6,ssjczbm7)编码组成。
我怎么能用更快的方式,用循环等等书写  7个手术码?

变量的意义:
①        JBDN(主要诊断的ICD-10 编码);
②        ssjczbm1 ,ssjczbm2,ssjczbm3,ssjczbm4,ssjczbm5,ssjczbm6,ssjczbm7  ( 手术编码)

例如:
急性心肌梗死的提取条件是:主要诊断为I21、I22编码为急性心肌梗死,排除编码为心脏手术的患者。
(substr(JBDM,1,3)= "I21" OR substr(JBDM,3)= "I22") AND (substr手术码,1,2)^="35"  OR substr(手术码,1,2)^="36"  OR substr (手术码,1,2)^="37" )

怎么能快速的从这样的书写

/*binghzong=1 急性心肌梗死 */
data b1;
set shuju;
if
     ( substr(JBDM,1,3)='I21' OR substr(JBDM,1,3)='I22' )  
AND
  ( substr(ssjczbm1,1,2)^="35"  OR substr(ssjczbm1,1,2)^="36"  OR substr(ssjczbm1,1,2)^="37"  )
AND  cykb="04"          
then bingzhong=1;
run;

转变成有7个手术码
/*依次给予病种赋值*/
/*binghzong=1 急性心肌梗死 */
data b1;
set shuju;
if
      (substr(JBDM,1,3)='I21' OR substr(JBDM,1,3)='I22' )  
AND
(
substr(ssjczbm1,1,2)^="35"  OR substr(ssjczbm1,1,2)^="36"  OR substr(ssjczbm1,1,2)^="37" OR
substr(ssjczbm2,1,2)^="35"  OR substr(ssjczbm2,1,2)^="36"  OR substr(ssjczbm2,1,2)^="37" OR
substr(ssjczbm3,1,2)^="35"  OR substr(ssjczbm3,1,2)^="36"  OR substr(ssjczbm3,1,2)^="37" OR
substr(ssjczbm4,1,2)^="35"  OR substr(ssjczbm4,1,2)^="36"  OR substr(ssjczbm4,1,2)^="37" OR
substr(ssjczbm5,1,2)^="35"  OR substr(ssjczbm5,1,2)^="36"  OR substr(ssjczbm5,1,2)^="37" OR
substr(ssjczbm6,1,2)^="35"  OR substr(ssjczbm6,1,2)^="36"  OR substr(ssjczbm6,1,2)^="37" OR
substr(ssjczbm7,1,2)^="35"  OR substr(ssjczbm7,1,2)^="36"  OR substr(ssjczbm7,1,2)^="37"
)
AND  cykb="04"          
then bingzhong=1;
run;




因为我有很多病种,
下面的胰腺切除术提取的条件是
(SUBSTR(手术码,1,5)>="42.40" AND SUBSTR(手术码,1,5)<="42.42")
OR (SUBSTR(手术码,1,5)>="42.51" AND SUBSTR(手术码,1,5)<="42.56")
OR (SUBSTR(手术码,1,5)>="42.58" AND SUBSTR(手术码,1,5)<="42.59")
OR (SUBSTR(手术码,1,5)>="42.61" AND SUBSTR(手术码,1,5)<="42.69")

/*binghzong=25 胰腺切除术*/
data b25;
set shuju;
if        
(
       ( substr(ssjczbm1,1,5)>="42.40" AND  substr(ssjczbm1,1,5)<="42.42" )
    OR ( substr(ssjczbm1,1,5)>="42.51" AND  substr(ssjczbm1,1,5)<="42.56" )
    OR ( substr(ssjczbm1,1,5)>="42.58" AND  substr(ssjczbm1,1,5)<="42.59" )
    OR ( substr(ssjczbm1,1,5)>="42.61" AND  substr(ssjczbm1,1,5)<="42.69" )
)
AND cykb="04"
then bingzhong=25;
run;

我怎么能快速的写上ssjczbm1 ,ssjczbm2,ssjczbm3,ssjczbm4,ssjczbm5,ssjczbm6,ssjczbm7   这7个手术码?
有些手术的条件很多的,写上一个手术码已经很长了,囊括7个手术码实在很让人抓狂。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
2
 楼主| 发表于 2013-11-21 11:53:32 | 只看该作者
变量的意义:
①        JBDN(主要诊断的ICD-10 编码);   错了  ,应该是 JBDM。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


免责声明|关于我们|小黑屋|联系我们|赞助我们|统计211 ( 闽ICP备09019626号  

GMT+8, 2025-4-5 00:38 , Processed in 0.081119 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表