| 1 | DGPTSUDO ;ALB/MTC - PTF UPDATE TRANSFER DRG NODE; 30 MAR 89@09 ; 3/12/02 12:14pm
|
---|
| 2 | ;;5.3;Registration;**441,510,478**;Aug 13, 1993
|
---|
| 3 | ;;ADL;Update for CSV Project;;Mar 28, 2003
|
---|
| 4 | UTIL S ^UTILITY($J,"T",(9999999.999999-$E(I,1,14)))=K_"^"_$S($D(^DIC(45.7,J,0)):$P(^(0),"^",2),1:0)_"^"_X_"^^"_$P(Y,"^",8)
|
---|
| 5 | Q
|
---|
| 6 | SUDO1 K ^UTILITY($J,"T"),T
|
---|
| 7 | F I=0:0 S I=$O(^DGPM("ATS",DFN,DGPMCA,I)) Q:I'>0 D
|
---|
| 8 | . S J=$O(^DGPM("ATS",DFN,DGPMCA,I,0)) I J D
|
---|
| 9 | .. S K=+$O(^(J,0)) I $D(^DGPM(K,0)) S Y=^(0),X=$S($D(^("PTF")):$P(^("PTF"),"^",2),1:"") I $D(^DGPT(PTF,"M",+X,0))!($D(^DGPM("APHY",+$P(Y,"^",14),K))) D UTIL
|
---|
| 10 | Q:'$D(^UTILITY($J,"T"))
|
---|
| 11 | VARS I '$D(^UTILITY($J,"T")) G SUDO1
|
---|
| 12 | S (DGPRD,DGNXD)=$O(^UTILITY($J,"T",0)) G Q:DGPRD'>0 S T(DGPRD)=^(DGPRD),(DGEXP,DGDMS,DGTRS,DGTLOS,DGLOS,DGDAT)=0,DGPT(70)=$S($D(^DGPT(PTF,70)):^(70),1:""),SEX=$P(^DPT(DFN,0),U,2),DOB=$P(^(0),U,3),(DGDX,DGNSV,DGPSV)=""
|
---|
| 13 | S DGDAT=$$GETDATE^ICDGTDRG(PTF)
|
---|
| 14 | K DGSURG,DGPROC S (DGSURG,DGPROC)=U
|
---|
| 15 | ;-- build DGSURG array
|
---|
| 16 | S DGPTDAT=$$GETDATE^ICDGTDRG(PTF)
|
---|
| 17 | F I=0:0 S I=$O(^DGPT(PTF,"S",I)) Q:I'>0 S X=$P(^(I,0),U,8,12) D
|
---|
| 18 | . I X]"",X'="^^^^" S Y=+^(0),Y=$S('$D(DGSURG(Y)):Y,Y[".":Y_I_1,1:Y_".0000"_I_1),DGSURG(Y)="" D
|
---|
| 19 | .. F J=1:1:5 I $P(X,U,J)]"" S DGPTTMP=$$ICDOP^ICDCODE($P(X,U,J),DGPTDAT) I +DGPTTMP>0 S DGSURG(Y)=DGSURG(Y)_$P(X,U,J)_U
|
---|
| 20 | ;-- build DGPROC array
|
---|
| 21 | F I=0:0 S I=$O(^DGPT(PTF,"P",I)) Q:I'>0 S X=$P(^(I,0),U,5,9) D
|
---|
| 22 | . I X]"",X'="^^^^" S Y=+^(0),Y=$S('$D(DGPROC(Y)):Y,Y[".":Y_I_1,1:Y_".0000"_I_1),DGPROC(Y)="" D
|
---|
| 23 | .. F J=1:1:5 I $P(X,U,J)]"" S DGPTTMP=$$ICDOP^ICDCODE($P(X,U,J),DGPTDAT) I +DGPTTMP>0 S DGPROC(Y)=DGPROC(Y)_$P(X,U,J)_U
|
---|
| 24 | ;
|
---|
| 25 | I $D(^DGPT(PTF,"401P")),+DGPT(70),+DGPT(70)<2871000 S X=^("401P") I X]"",X'="^^^^" D
|
---|
| 26 | . F I=1:1:5 I $P(X,U,I)]"" S DGPTTMP=$$ICDOP^ICDCODE($P(X,U,I),DGPTDAT) I +DGPTTMP>0 S DGPROC=DGPROC_$P(X,U,I)_U,DG401P=1
|
---|
| 27 | ;
|
---|
| 28 | SUDO2 ;
|
---|
| 29 | S DGNXD=$O(^UTILITY($J,"T",DGNXD))
|
---|
| 30 | G ONE:DGNXD'>0 S T(DGNXD)=^UTILITY($J,"T",DGNXD),I1=+$P(T(DGNXD),U,3),DGDOC=$P(T(DGNXD),U,5)
|
---|
| 31 | F I=DGPRD,DGNXD S L1(I)=$P(T(I),U,2)
|
---|
| 32 | G:L1(DGPRD)=L1(DGNXD) SWCH
|
---|
| 33 | S DGPSV=$S($D(^DIC(42.4,+L1(DGPRD),0)):$P(^(0),U,3),1:""),DGNSV=$S($D(^DIC(42.4,+L1(DGNXD),0)):$P(^(0),U,3),1:"")
|
---|
| 34 | G:DGPSV']""!(DGNSV']"") SWCH
|
---|
| 35 | I "^I^SCI^B^NH^D^RE^"'[(U_DGPSV_U),$D(^DGPT(PTF,"M",I1,0)) S DGNODE=^(0) D
|
---|
| 36 | . D BLD I DGPSV'=DGNSV D DRG S DGSURG=U,DGDX="",DGLOS=0 I '$D(DG401P) S DGPROC=U
|
---|
| 37 | SWCH ;
|
---|
| 38 | K DGLEV,DGPAS
|
---|
| 39 | S DGPRD=DGNXD,T(DGPRD)=T(DGNXD),(DGNSV,DGPSV)=""
|
---|
| 40 | G SUDO2
|
---|
| 41 | ;
|
---|
| 42 | BLD ;
|
---|
| 43 | F I=9:-1:5 I $P(DGNODE,U,I)]"" S DGPTTMP=$$ICDDX^ICDCODE($P(DGNODE,U,I),$$GETDATE^ICDGTDRG(PTF)) I +DGPTTMP>0 S DGDX=$P(DGNODE,U,I)_U_DGDX
|
---|
| 44 | S:$L(DGDX)>200 DGDX=$P(DGDX,U,1,30)
|
---|
| 45 | S DGLEV=$P(DGNODE,U,3),DGPAS=$P(DGNODE,U,4),X1=DGNXD,X2=DGPRD D ^%DTC S X=$S(X>0:X,1:1)-DGLEV-DGPAS,DGLOS=DGLOS+X
|
---|
| 46 | N I,J,X,Y,Z
|
---|
| 47 | F I=0:0 S I=$O(DGSURG(I)) Q:I'>0!(I\1>(DGNXD\1)) D SU
|
---|
| 48 | I '$D(DG401P) F I=0:0 S I=$O(DGPROC(I)) Q:I'>0!((I\1)>(DGNXD\1)) D ;S DGPROC=DGPROC(I)_DGPROC K DGPROC(I) I $L(DGPROC)>200 S DGPROC=$P(DGPROC,U,1,30)
|
---|
| 49 | .S X=DGPROC(I)
|
---|
| 50 | .F J=1:1:5 S Y=$P(X,U,J) Q:Y="" D
|
---|
| 51 | ..Q:$L(DGPROC)>240
|
---|
| 52 | ..S Z=U_Y_U Q:DGPROC[Z
|
---|
| 53 | ..S DGPROC=DGPROC_Y_U
|
---|
| 54 | .K DGPROC(I)
|
---|
| 55 | Q
|
---|
| 56 | SU ;
|
---|
| 57 | ;S:$L(DGSURG)>200 DGSURG=$P(DGSURG,U,1,30)
|
---|
| 58 | ;I I<DGNXD S DGSURG=DGSURG(I)_DGSURG K DGSURG(I) Q ; surgery date is prior to movement date
|
---|
| 59 | ; only gets here if surgery occurred on movement date
|
---|
| 60 | ;I DGPSV=DGNSV S DGSURG=DGSURG(I)_DGSURG K DGSURG(I) Q ; no RAM movement occurred so surgery should be grouped
|
---|
| 61 | ;I DGPSV="S" S DGSURG=DGSURG(I)_DGSURG K DGSURG(I) Q ; RAM movement occurred and losing service is surgery, so surgery should be grouped
|
---|
| 62 | ;Q
|
---|
| 63 | ; 2002 coding replaces above,eliminates dupes,allows more codes
|
---|
| 64 | I I<DGNXD!(DGPSV=DGNSV)!(DGPSV="S") D
|
---|
| 65 | .S X=DGSURG(I)
|
---|
| 66 | .F J=1:1:5 S Y=$P(X,U,J) Q:Y="" D
|
---|
| 67 | ..Q:$L(DGSURG)>240
|
---|
| 68 | ..S Z=U_Y_U Q:DGSURG[Z
|
---|
| 69 | ..S DGSURG=DGSURG_Y_U
|
---|
| 70 | .K DGSURG(I)
|
---|
| 71 | Q
|
---|
| 72 | ;
|
---|
| 73 | DRG ;
|
---|
| 74 | S AGE=DGPRD-DOB\10000,DGTLOS=DGTLOS+DGLOS,DRG=""
|
---|
| 75 | D ^DGPTICD
|
---|
| 76 | S DGDOC=$S($D(^VA(200,+DGDOC)):DGDOC,1:"")
|
---|
| 77 | N DGFDA,DGMSG
|
---|
| 78 | S DGFDA(45.02,I1_","_PTF_",",20)=DRG
|
---|
| 79 | S DGFDA(45.02,I1_","_PTF_",",21)=DGPSV
|
---|
| 80 | S DGFDA(45.02,I1_","_PTF_",",22)=DGNXD
|
---|
| 81 | S DGFDA(45.02,I1_","_PTF_",",23)=DGLOS
|
---|
| 82 | S DGFDA(45.02,I1_","_PTF_",",24)=DGDOC
|
---|
| 83 | S DGFDA(45.02,I1_","_PTF_",",25)=DGTLOS
|
---|
| 84 | D FILE^DIE("","DGFDA","DGMSG")
|
---|
| 85 | Q
|
---|
| 86 | ;
|
---|
| 87 | ONE ;
|
---|
| 88 | S DGNXD=$S(+$P(^DGPT(PTF,"M",1,0),U,10):$P(^(0),U,10),1:DT),L1(DGNXD)=$P(^(0),U,2) S:'$D(T(DGNXD)) T(DGNXD)=T(DGPRD),DGDOC=$P(T(DGNXD),U,5)
|
---|
| 89 | S:$P(DGPT(70),U,3)>5 DGEXP=1 S:$P(DGPT(70),U,3)=4 DGDMS=1 S:$P(DGPT(70),U,13) DGTRS=1
|
---|
| 90 | I L1(DGNXD),$D(^DIC(42.4,+L1(DGNXD),0)) S I1=1,DGPSV=$P(^(0),U,3),DGADM=$P(^DGPT(PTF,0),U,2)
|
---|
| 91 | S DGNODE=$S($D(^DGPT(PTF,"M",1,0)):^(0),1:"") D BLD
|
---|
| 92 | I $D(^DGPT("AADA",DGADM,PTF)) S I=$S($P(DGPT(70),U,10):$P(DGPT(70),U,10),$P(DGPT(70),U,11):$P(DGPT(70),U,11),1:"") I I]"" S DGDX=I_U_DGDX
|
---|
| 93 | S I1=1 D DRG,^DGPTSUD1
|
---|
| 94 | Q ;
|
---|
| 95 | K DGDMS,DGDOC,DGDX,DGEXP,DGLEV,DGLOS,DGNODE,DGNSV,DGNXD,DGPAS,DGPRD,DGPROC,DGPSV,DGPT,DGSURG,DGTLOS,DGTRS,DG401P,I,I1,I2,J,L1,T,X,X1,X2,Y Q
|
---|
| 96 | ;
|
---|