[628] | 1 | ICD1831L ;ALB/JAP - FY 2008 DRG UPDATE ; 10/17/07 2:33pm
|
---|
| 2 | ;;18.0;DRG Grouper;**31**;Oct 20, 2000;Build 7
|
---|
| 3 | ;
|
---|
| 4 | CONV80(ICDINPUT) ;convert CMSv24 DRG to MSv25 DRG for file #80
|
---|
| 5 | ; input ICDINPUT - string containing Dx, MDC, and DRGs
|
---|
| 6 | ; <.01_field>_^_<mdc_ien>_^_<drg1_ien>_^_<drg2_ien>_^...
|
---|
| 7 | N ICDX,ICDRSLT
|
---|
| 8 | ;if no DRGs passed in, try to get data from set of new Diagnoses
|
---|
| 9 | ;S ICDX=$P(ICDINPUT,U,3,99) I ICDX="" S ICDRSLT=$$NEW80^ICD1831L(ICDINPUT) Q ICDRSLT
|
---|
| 10 | S ICDRSLT=$$NEW80^ICD1831L(ICDINPUT) I +$P(ICDRSLT,U,2),+$P(ICDRSLT,U,3) Q ICDRSLT
|
---|
| 11 | Q $$GETV25^ICD1831L(ICDINPUT)
|
---|
| 12 | ;
|
---|
| 13 | CONV801(ICDINPUT) ;convert CMSv24 DRG to MSv25 DRG for file #80.1
|
---|
| 14 | ; input ICDINPUT - string containing Dx, MDC, and DRGs
|
---|
| 15 | ; <.01_field>_^_<mdc_ien>_^_<drg1_ien>_^_<drg2_ien>_^...
|
---|
| 16 | Q $$GETV25^ICD1831L(ICDINPUT)
|
---|
| 17 | ;
|
---|
| 18 | GETV25(ICDINPUT) ;get MSv25 DRGs from crosswalk tables
|
---|
| 19 | N ICDRSLT,ICD01,ICDOMDC,ICDMDC,ICDX,ICDXX,ICDD,ICDOD,ICDTAG,ICDROU,ICDTEXT,I,J
|
---|
| 20 | S ICDRSLT=""
|
---|
| 21 | I $G(ICDINPUT)="" Q ICDRSLT
|
---|
| 22 | S ICD01=$P(ICDINPUT,U,1),ICDOMDC=$P(ICDINPUT,U,2),ICDX=$P(ICDINPUT,U,3,99)
|
---|
| 23 | ;quit if there are no DRGs to convert
|
---|
| 24 | I ICDX="" S ICDRSLT=ICD01_U_U Q ICDRSLT
|
---|
| 25 | ;otherwise perform conversion for each DRG
|
---|
| 26 | F I=1:1 Q:($P(ICDX,U,I)="") D
|
---|
| 27 | .S ICDOD=+$P(ICDX,U,I) S ICDROU=$S(ICDOD<300:"ICD1831M",1:"ICD1831N")
|
---|
| 28 | .S ICDTAG="DRG"_ICDOD_"^"_ICDROU
|
---|
| 29 | .S ICDTEXT=$T(@ICDTAG),ICDTEXT=$P(ICDTEXT,";;",2)
|
---|
| 30 | .S ICDXX=$P(ICDTEXT,";",1),ICDMDC=$P(ICDTEXT,";",2)
|
---|
| 31 | .Q:(ICDXX="")
|
---|
| 32 | .;Q:(ICDMDC'=ICDOMDC)
|
---|
| 33 | .F J=1:1 Q:($P(ICDXX,U,J)="") S ICDD($P(ICDXX,U,J))=""
|
---|
| 34 | ;set data into result
|
---|
| 35 | S ICDRSLT=ICD01_U_ICDOMDC
|
---|
| 36 | S I=0 F S I=$O(ICDD(I)) Q:'I S ICDRSLT=ICDRSLT_U_I
|
---|
| 37 | Q ICDRSLT
|
---|
| 38 | ;
|
---|
| 39 | NEW80(ICDINPUT) ;get DRG/MDC for new entries in file #80
|
---|
| 40 | N ICDRSLT,ICD01,ICDTAG,ICDTEXT,ICDMDC,ICDXX,ICDD,I
|
---|
| 41 | S ICDRSLT=""
|
---|
| 42 | I $G(ICDINPUT)="" Q ICDRSLT
|
---|
| 43 | S ICD01=$P(ICDINPUT,U,1)
|
---|
| 44 | S ICDTAG="DX"_$TR(ICD01,".","")_"^ICD1831R"
|
---|
| 45 | S ICDTEXT=$T(@ICDTAG),ICDTEXT=$P(ICDTEXT,";;",2)
|
---|
| 46 | ;quit if no DRG data could be found for Diagnosis
|
---|
| 47 | I ICDTEXT="" S ICDRSLT=ICD01_U_U Q ICDRSLT
|
---|
| 48 | ;otherwise return DRGs
|
---|
| 49 | S ICDXX=$P(ICDTEXT,";",1),ICDMDC=$P(ICDTEXT,";",2)
|
---|
| 50 | F I=1:1 Q:($P(ICDXX,U,I)="") S ICDD(I)=$P(ICDXX,U,I)
|
---|
| 51 | S ICDRSLT=ICD01_U_ICDMDC
|
---|
| 52 | F I=1:1 Q:('$D(ICDD(I))) S ICDRSLT=ICDRSLT_U_ICDD(I)
|
---|
| 53 | Q ICDRSLT
|
---|
| 54 | ;
|
---|
| 55 | NEW801(ICDINPUT,ICDARRAY) ;get DRG/MDC for new entries in file #80.1
|
---|
| 56 | N ICD01,ICDROU,ICDTAG,ICDTEXT,ICDMDC,ICDXX,I,J
|
---|
| 57 | K ICDARRAY
|
---|
| 58 | Q:($G(ICDINPUT)="")
|
---|
| 59 | S ICD01=$P(ICDINPUT,U,1)
|
---|
| 60 | S ICDROU="^ICD1831Q"
|
---|
| 61 | S ICDTAG="PR"_$TR(ICD01,".","")_ICDROU
|
---|
| 62 | S ICDTEXT=$T(@ICDTAG)
|
---|
| 63 | Q:(ICDTEXT="")
|
---|
| 64 | F I=1:1 D Q:(ICDTEXT="END")
|
---|
| 65 | .S ICDTAG="PR"_$TR(ICD01,".","")_"+"_I_ICDROU
|
---|
| 66 | .S ICDTEXT=$T(@ICDTAG),ICDTEXT=$P(ICDTEXT,";;",2)
|
---|
| 67 | .I ICDTEXT'="END" D
|
---|
| 68 | ..S ICDXX=$P(ICDTEXT,";",1),ICDMDC=$P(ICDTEXT,";",2)
|
---|
| 69 | ..F J=1:1 Q:($P(ICDXX,U,J)="") S ICDARRAY(ICDMDC,$P(ICDXX,U,J))=""
|
---|
| 70 | Q
|
---|