Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DGPTSUDO

DGPTSUDO.m

Go to the documentation of this file.
  1. DGPTSUDO ;ALB/MTC - PTF UPDATE TRANSFER DRG NODE; 30 MAR 89@09 ; 3/12/02 12:14pm
  1. ;;5.3;PIMS;**441,510,478,785,1015,1016**;JUN 30, 2012;Build 20
  1. ;;ADL;Update for CSV Project;;Mar 28, 2003
  1. 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)
  1. Q
  1. SUDO1 K ^UTILITY($J,"T"),T
  1. F I=0:0 S I=$O(^DGPM("ATS",DFN,DGPMCA,I)) Q:I'>0 D
  1. . S J=$O(^DGPM("ATS",DFN,DGPMCA,I,0)) I J D
  1. .. 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
  1. Q:'$D(^UTILITY($J,"T"))
  1. VARS I '$D(^UTILITY($J,"T")) G SUDO1
  1. 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)=""
  1. S DGDAT=$$GETDATE^ICDGTDRG(PTF)
  1. K DGSURG,DGPROC S (DGSURG,DGPROC)=U
  1. ;-- build DGSURG array
  1. S DGPTDAT=$$GETDATE^ICDGTDRG(PTF)
  1. F I=0:0 S I=$O(^DGPT(PTF,"S",I)) Q:I'>0 S X=$P(^(I,0),U,8,12) D
  1. . I X]"",X'="^^^^" S Y=+^(0),Y=$S('$D(DGSURG(Y)):Y,Y[".":Y_I_1,1:Y_".0000"_I_1),DGSURG(Y)="" D
  1. ..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
  1. ;-- build DGPROC array
  1. F I=0:0 S I=$O(^DGPT(PTF,"P",I)) Q:I'>0 S X=$P(^(I,0),U,5,9) D
  1. . I X]"",X'="^^^^" S Y=+^(0),Y=$S('$D(DGPROC(Y)):Y,Y[".":Y_I_1,1:Y_".0000"_I_1),DGPROC(Y)="" D
  1. .. 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
  1. ;
  1. I $D(^DGPT(PTF,"401P")),+DGPT(70),+DGPT(70)<2871000 S X=^("401P") I X]"",X'="^^^^" D
  1. . 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
  1. ;
  1. SUDO2 ;
  1. S DGNXD=$O(^UTILITY($J,"T",DGNXD))
  1. G ONE:DGNXD'>0 S T(DGNXD)=^UTILITY($J,"T",DGNXD),I1=+$P(T(DGNXD),U,3),DGDOC=$P(T(DGNXD),U,5)
  1. F I=DGPRD,DGNXD S L1(I)=$P(T(I),U,2)
  1. G:L1(DGPRD)=L1(DGNXD) SWCH
  1. 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:"")
  1. G:DGPSV']""!(DGNSV']"") SWCH
  1. I "^I^SCI^B^NH^D^RE^"'[(U_DGPSV_U),$D(^DGPT(PTF,"M",I1,0)) S DGNODE=^(0) D
  1. . D BLD I DGPSV'=DGNSV D DRG S DGSURG=U,DGDX="",DGLOS=0 I '$D(DG401P) S DGPROC=U
  1. SWCH ;
  1. K DGLEV,DGPAS
  1. S DGPRD=DGNXD,T(DGPRD)=T(DGNXD),(DGNSV,DGPSV)=""
  1. G SUDO2
  1. ;
  1. BLD ;
  1. 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
  1. S:$L(DGDX)>200 DGDX=$P(DGDX,U,1,30)
  1. 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
  1. N I,J,X,Y,Z
  1. F I=0:0 S I=$O(DGSURG(I)) Q:I'>0!(I\1>(DGNXD\1)) D SU
  1. 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)
  1. .S X=DGPROC(I)
  1. .F J=1:1:5 S Y=$P(X,U,J) Q:Y="" D
  1. ..Q:$L(DGPROC)>240
  1. ..S Z=U_Y_U
  1. ..;Q:DGPROC[Z
  1. ..S DGPROC=DGPROC_Y_U
  1. ..S DGPROC(J)=Y
  1. ..K DGPROC(I)
  1. Q
  1. SU ;
  1. ;S:$L(DGSURG)>200 DGSURG=$P(DGSURG,U,1,30)
  1. ;I I<DGNXD S DGSURG=DGSURG(I)_DGSURG K DGSURG(I) Q ; surgery date is prior to movement date
  1. ; only gets here if surgery occurred on movement date
  1. ;I DGPSV=DGNSV S DGSURG=DGSURG(I)_DGSURG K DGSURG(I) Q ; no RAM movement occurred so surgery should be grouped
  1. ;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
  1. ;Q
  1. ; 2002 coding replaces above,eliminates dupes,allows more codes
  1. I I<DGNXD!(DGPSV=DGNSV)!(DGPSV="S") D
  1. .S X=DGSURG(I)
  1. .F J=1:1:5 S Y=$P(X,U,J) Q:Y="" D
  1. ..Q:$L(DGSURG)>240
  1. ..S Z=U_Y_U
  1. ..;Q:DGSURG[Z
  1. ..S DGSURG=DGSURG_Y_U
  1. ..S ICDSURG(J)=Y
  1. ..K DGSURG(I)
  1. Q
  1. ;
  1. DRG ;
  1. S AGE=DGPRD-DOB\10000,DGTLOS=DGTLOS+DGLOS,DRG=""
  1. D ^DGPTICD
  1. S DGDOC=$S($D(^VA(200,+DGDOC)):DGDOC,1:"")
  1. N DGFDA,DGMSG
  1. S DGFDA(45.02,I1_","_PTF_",",20)=DRG
  1. S DGFDA(45.02,I1_","_PTF_",",21)=DGPSV
  1. S DGFDA(45.02,I1_","_PTF_",",22)=DGNXD
  1. S DGFDA(45.02,I1_","_PTF_",",23)=DGLOS
  1. S DGFDA(45.02,I1_","_PTF_",",24)=DGDOC
  1. S DGFDA(45.02,I1_","_PTF_",",25)=DGTLOS
  1. D FILE^DIE("","DGFDA","DGMSG")
  1. Q
  1. ;
  1. ONE ;
  1. 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)
  1. 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
  1. 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)
  1. S DGNODE=$S($D(^DGPT(PTF,"M",1,0)):^(0),1:"") D BLD
  1. 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
  1. S I1=1 D DRG,^DGPTSUD1
  1. Q ;
  1. K DGDMS,DGDOC,DGDX,DGEXP,DGLEV,DGLOS,DGNODE,DGNSV,DGNXD,DGPAS,DGPRD,DGPROC,DGPSV,DGPT,DGSURG,ICDSURG,DGTLOS,DGTRS,DG401P,I,I1,I2,J,L1,T,X,X1,X2,Y Q
  1. ;