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

ACDRR1CB.m

Go to the documentation of this file.
  1. ACDRR1CB ;IHS/ADC/EDE/KML - BROKE UP ACDRR1C;
  1. ;;4.1;CHEMICAL DEPENDENCY MIS;;MAY 11, 1998
  1. ;
  1. PATIENTS ; EP-PROCESS PATIENTS WITH VISITS WITHIN TIME FRAME
  1. D ZEROCNTS
  1. S ACDPIEN=0
  1. F S ACDPIEN=$O(^TMP("ACDRR1",$J,1,"PATIENT",ACDPIEN)) Q:'ACDPIEN D:'^(ACDPIEN) FINDPRB D:^TMP("ACDRR1",$J,1,"PATIENT",ACDPIEN) PATCNT
  1. D PROBCNT ; count patients by problem
  1. D DRUGCNT ; count patients by drug used
  1. D COMPLOS ; length of stay by cc/ct
  1. D TBLCNTS ; save counts for print routine
  1. Q
  1. ;
  1. ZEROCNTS ; ZERO COUNTERS
  1. S ACDCT("SEEN")=0
  1. S ACDCT("SEEN","M")=0
  1. S ACDCT("SEEN","F")=0
  1. S ACDCT("ALCOHOL")=0
  1. S ACDCT("ALCOHOL","CS")=0
  1. S ACDCT("ALCOHOL","DAYS")=0
  1. S ACDCT("ALCOHOL","HRS")=0
  1. S ACDCT("ALCOHOL","M")=0
  1. S ACDCT("ALCOHOL","F")=0
  1. S ACDCT("ALCOHOL ONLY")=0
  1. S ACDCT("ALCOHOL ONLY","CS")=0
  1. S ACDCT("ALCOHOL ONLY","DAYS")=0
  1. S ACDCT("ALCOHOL ONLY","HRS")=0
  1. S ACDCT("ALCOHOL ONLY","M")=0
  1. S ACDCT("ALCOHOL ONLY","F")=0
  1. S ACDCT("DRUGS")=0
  1. S ACDCT("DRUGS","CS")=0
  1. S ACDCT("DRUGS","DAYS")=0
  1. S ACDCT("DRUGS","HRS")=0
  1. S ACDCT("DRUGS","M")=0
  1. S ACDCT("DRUGS","F")=0
  1. S ACDCT("DRUGS ONLY")=0
  1. S ACDCT("DRUGS ONLY","CS")=0
  1. S ACDCT("DRUGS ONLY","DAYS")=0
  1. S ACDCT("DRUGS ONLY","HRS")=0
  1. S ACDCT("DRUGS ONLY","M")=0
  1. S ACDCT("DRUGS ONLY","F")=0
  1. S ACDCT("ALCOHOL&DRUGS")=0
  1. S ACDCT("ALCOHOL&DRUGS","CS")=0
  1. S ACDCT("ALCOHOL&DRUGS","DAYS")=0
  1. S ACDCT("ALCOHOL&DRUGS","HRS")=0
  1. S ACDCT("ALCOHOL&DRUGS","M")=0
  1. S ACDCT("ALCOHOL&DRUGS","F")=0
  1. S ACDCT("NEITHER")=0
  1. S ACDCT("NEITHER","CS")=0
  1. S ACDCT("NEITHER","DAYS")=0
  1. S ACDCT("NEITHER","HRS")=0
  1. S ACDCT("NEITHER","M")=0
  1. S ACDCT("NEITHER","F")=0
  1. F Y=1:1:3 D
  1. . S ACDCT("TOBACCO",Y)=0
  1. . S ACDCT("TOBACCO",Y,"M")=0
  1. . S ACDCT("TOBACCO",Y,"F")=0
  1. . Q
  1. Q
  1. ;
  1. PATCNT ; COUNT PATIENT DATA
  1. D PATCNT^ACDRR1CC
  1. Q
  1. ;
  1. PROBCNT ; PATIENT COUNT BY PROBLEM
  1. D PROBCNT^ACDRR1CC
  1. Q
  1. ;
  1. DRUGCNT ; PATIENT COUNT BY DRUG
  1. D DRUGCNT^ACDRR1CC
  1. Q
  1. ;
  1. TBLCNTS ; TABLE COUNTS FOR PRINT ROUTINE
  1. K ^TMP("ACDRR1",ACDJOB,ACDBT)
  1. ; seen
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"SEEN")=ACDCT("SEEN")
  1. F X="M","F" S ^TMP("ACDRR1",ACDJOB,ACDBT,"SEEN",X)=+$G(ACDCT("SEEN",X))
  1. F X=1:1:3 S ^TMP("ACDRR1",ACDJOB,ACDBT,"SEEN","AGE",X)=+$G(ACDCT("SEEN","AGE",X))
  1. ; length of stay by component code/type
  1. S ACDCCT=""
  1. F S ACDCCT=$O(^TMP("ACDRR1",$J,1,"LOS","T",ACDCCT)) Q:ACDCCT="" D
  1. . S Z=$P(ACDCCT,"/"),Z=$P($G(^ACDCOMP(Z,0)),U,2) S:Z="" Z=$P(ACDCCT,"/") S Z=Z_"/"_$P(ACDCCT,"/",2)
  1. . S ^TMP("ACDRR1",ACDJOB,ACDBT,"LOS",Z,"AVG")=^TMP("ACDRR1",$J,1,"LOS","T",ACDCCT,"TOTAL")/^TMP("ACDRR1",$J,1,"LOS","T",ACDCCT,"COUNT")
  1. . S ^TMP("ACDRR1",ACDJOB,ACDBT,"LOS",Z,"COUNT")=^TMP("ACDRR1",$J,1,"LOS","T",ACDCCT,"COUNT")
  1. . Q
  1. ; tribe
  1. S ACDTRIBE=""
  1. F S ACDTRIBE=$O(ACDCT("TRIBE",ACDTRIBE)) Q:ACDTRIBE="" D
  1. . S ^TMP("ACDRR1",ACDJOB,ACDBT,"TRIBE",ACDTRIBE)=ACDCT("TRIBE",ACDTRIBE)
  1. . F X="M","F" S ^TMP("ACDRR1",ACDJOB,ACDBT,"TRIBE",ACDTRIBE,X)=+$G(ACDCT("TRIBE",ACDTRIBE,X))
  1. . F X=1:1:3 S ^TMP("ACDRR1",ACDJOB,ACDBT,"TRIBE",ACDTRIBE,"AGE",X)=+$G(ACDCT("TRIBE",ACDTRIBE,"AGE",X))
  1. . Q
  1. ; alcohol
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL")=ACDCT("ALCOHOL")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL","CS")=ACDCT("ALCOHOL","CS")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL","DAYS")=ACDCT("ALCOHOL","DAYS")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL","HRS")=ACDCT("ALCOHOL","HRS")
  1. F X="M","F" S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL",X)=+$G(ACDCT("ALCOHOL",X))
  1. F X=1:1:3 S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL","AGE",X)=+$G(ACDCT("ALCOHOL","AGE",X))
  1. ; alcohol only
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL ONLY")=ACDCT("ALCOHOL ONLY")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL ONLY","CS")=ACDCT("ALCOHOL ONLY","CS")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL ONLY","DAYS")=ACDCT("ALCOHOL ONLY","DAYS")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL ONLY","HRS")=ACDCT("ALCOHOL ONLY","HRS")
  1. F X="M","F" S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL ONLY",X)=+$G(ACDCT("ALCOHOL ONLY",X))
  1. F X=1:1:3 S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL ONLY","AGE",X)=+$G(ACDCT("ALCOHOL ONLY","AGE",X))
  1. ; drugs
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUGS")=ACDCT("DRUGS")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUGS","CS")=ACDCT("DRUGS","CS")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUGS","DAYS")=ACDCT("DRUGS","DAYS")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUGS","HRS")=ACDCT("DRUGS","HRS")
  1. F X="M","F" S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUGS",X)=+$G(ACDCT("DRUGS",X))
  1. F X=1:1:3 S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUGS","AGE",X)=+$G(ACDCT("DRUGS","AGE",X))
  1. ; drugs only
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUGS ONLY")=ACDCT("DRUGS ONLY")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUGS ONLY","CS")=ACDCT("DRUGS ONLY","CS")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUGS ONLY","DAYS")=ACDCT("DRUGS ONLY","DAYS")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUGS ONLY","HRS")=ACDCT("DRUGS ONLY","HRS")
  1. F X="M","F" S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUGS ONLY",X)=+$G(ACDCT("DRUGS ONLY",X))
  1. F X=1:1:3 S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUGS ONLY","AGE",X)=+$G(ACDCT("DRUGS ONLY","AGE",X))
  1. ; alcohol&drugs
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL&DRUGS")=ACDCT("ALCOHOL&DRUGS")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL&DRUGS","CS")=ACDCT("ALCOHOL&DRUGS","CS")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL&DRUGS","DAYS")=ACDCT("ALCOHOL&DRUGS","DAYS")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL&DRUGS","HRS")=ACDCT("ALCOHOL&DRUGS","HRS")
  1. F X="M","F" S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL&DRUGS",X)=+$G(ACDCT("ALCOHOL&DRUGS",X))
  1. F X=1:1:3 S ^TMP("ACDRR1",ACDJOB,ACDBT,"ALCOHOL&DRUGS","AGE",X)=+$G(ACDCT("ALCOHOL&DRUGS","AGE",X))
  1. ; neither
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"NEITHER")=ACDCT("NEITHER")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"NEITHER","CS")=ACDCT("NEITHER","CS")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"NEITHER","DAYS")=ACDCT("NEITHER","DAYS")
  1. S ^TMP("ACDRR1",ACDJOB,ACDBT,"NEITHER","HRS")=ACDCT("NEITHER","HRS")
  1. F X="M","F" S ^TMP("ACDRR1",ACDJOB,ACDBT,"NEITHER",X)=+$G(ACDCT("NEITHER",X))
  1. F X=1:1:3 S ^TMP("ACDRR1",ACDJOB,ACDBT,"NEITHER","AGE",X)=+$G(ACDCT("NEITHER","AGE",X))
  1. ; tobacco
  1. F Y=1:1:3 D
  1. . S ^TMP("ACDRR1",ACDJOB,ACDBT,"TOBACCO",Y)=ACDCT("TOBACCO",Y)
  1. . F X="M","F" S ^TMP("ACDRR1",ACDJOB,ACDBT,"TOBACCO",Y,X)=+$G(ACDCT("TOBACCO",Y,X))
  1. . F X=1:1:3 S ^TMP("ACDRR1",ACDJOB,ACDBT,"TOBACCO",Y,"AGE",X)=+$G(ACDCT("TOBACCO",Y,"AGE",X))
  1. . Q
  1. ; problem
  1. S ACDPRIEN=0
  1. F S ACDPRIEN=$O(^TMP("ACDRR1",$J,1,"PROBLEM",ACDPRIEN)) Q:'ACDPRIEN S Y=^(ACDPRIEN) D
  1. . S ^TMP("ACDRR1",ACDJOB,ACDBT,"PROBLEM",Y,ACDPRIEN)=""
  1. . F X="M","F" S ^TMP("ACDRR1",ACDJOB,ACDBT,"PROBLEM",Y,ACDPRIEN,X)=$G(^TMP("ACDRR1",$J,1,"PROBLEM",ACDPRIEN,X))
  1. . F X=1:1:3 S ^TMP("ACDRR1",ACDJOB,ACDBT,"PROBLEM",Y,ACDPRIEN,"AGE",X)=$G(^TMP("ACDRR1",$J,1,"PROBLEM",ACDPRIEN,"AGE",X))
  1. . Q
  1. ; primary problem
  1. S ACDPRIEN=0
  1. F S ACDPRIEN=$O(^TMP("ACDRR1",$J,1,"PRI PROB",ACDPRIEN)) Q:'ACDPRIEN S Y=^(ACDPRIEN) D
  1. . S ^TMP("ACDRR1",ACDJOB,ACDBT,"PRI PROB",Y,ACDPRIEN)=""
  1. . F X="M","F" S ^TMP("ACDRR1",ACDJOB,ACDBT,"PRI PROB",Y,ACDPRIEN,X)=$G(^TMP("ACDRR1",$J,1,"PRI PROB",ACDPRIEN,X))
  1. . F X=1:1:3 S ^TMP("ACDRR1",ACDJOB,ACDBT,"PRI PROB",Y,ACDPRIEN,"AGE",X)=$G(^TMP("ACDRR1",$J,1,"PRI PROB",ACDPRIEN,"AGE",X))
  1. . Q
  1. ; drugs
  1. S ACDDRUG=""
  1. F S ACDDRUG=$O(^TMP("ACDRR1",$J,1,"DRUG",ACDDRUG)) Q:ACDDRUG="" S Y=^(ACDDRUG) D
  1. . S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUG",Y,ACDDRUG)=""
  1. . F X="M","F" S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUG",Y,ACDDRUG,X)=$G(^TMP("ACDRR1",$J,1,"DRUG",ACDDRUG,X))
  1. . F X=1:1:3 S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUG",Y,ACDDRUG,"AGE",X)=$G(^TMP("ACDRR1",$J,1,"DRUG",ACDDRUG,"AGE",X))
  1. . Q
  1. ; drug combinations
  1. S ACDCMBO=""
  1. F S ACDCMBO=$O(^TMP("ACDRR1",$J,1,"DRUG COMBO",ACDCMBO)) Q:ACDCMBO="" D
  1. . S C=^TMP("ACDRR1",$J,1,"DRUG COMBO",ACDCMBO)
  1. . S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUG COMBO",ACDCMBO)=C
  1. . F X="M","F" S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUG COMBO",C,ACDCMBO,X)=$G(^TMP("ACDRR1",$J,1,"DRUG COMBO",ACDCMBO,X))
  1. . F X=1:1:3 S ^TMP("ACDRR1",ACDJOB,ACDBT,"DRUG COMBO",C,ACDCMBO,"AGE",X)=$G(^TMP("ACDRR1",$J,1,"DRUG COMBO",ACDCMBO,"AGE",X))
  1. . Q
  1. Q
  1. ;
  1. FINDPRB ; FIND PROBLEMS IN EARLIER IN/RE/FU OR LATER TD
  1. ; find in/re/fu before time frame or td after time frame
  1. S ACDVIEN=0,ACDVHIT=0
  1. F S ACDVIEN=$O(^ACDVIS("D",ACDPIEN,ACDVIEN)) Q:'ACDVIEN I $D(^ACDVIS(ACDVIEN,0)) S X=^(0) I $G(^ACDVIS(ACDVIEN,"BWP"))=ACDPGM D Q:^TMP("ACDRR1",$J,1,"PATIENT",ACDPIEN)
  1. . S ACDVDATE=$P(X,U)
  1. . I ACDVDATE>ACDDTLO,ACDVHIT NEW ACDVIEN S ACDVIEN=ACDVHIT D PRCIIF^ACDRR1C Q:^TMP("ACDRR1",$J,1,"PATIENT",ACDPIEN) S ACDVHIT=0
  1. . S ACDTC=$P(X,U,4)
  1. . I ACDTC'="IN",ACDTC'="RE",ACDTC'="FU",ACDTC'="TD" Q
  1. . I ACDVDATE>ACDDTLO,ACDTC'="TD" Q
  1. . S ACDVHIT=ACDVIEN
  1. . I ACDTC="TD" NEW ACDVIEN S ACDVIEN=ACDVHIT,ACDVHIT=0 D PRCTD^ACDRR1C
  1. . Q
  1. Q
  1. ;
  1. COMPLOS ; COMPUTE LENGTH OF STAY BY COMP CODE/TYPE
  1. S ACDPIEN=0
  1. F S ACDPIEN=$O(^TMP("ACDRR1",$J,1,"LOS",ACDPIEN)) Q:'ACDPIEN D
  1. . S ACDCCT=""
  1. . F S ACDCCT=$O(^TMP("ACDRR1",$J,1,"LOS",ACDPIEN,ACDCCT)) Q:ACDCCT="" D
  1. .. S ACDDATE=""
  1. .. F S ACDDATE=$O(^TMP("ACDRR1",$J,1,"LOS",ACDPIEN,ACDCCT,ACDDATE)) Q:ACDDATE="" D COMPLOS2
  1. .. Q
  1. . Q
  1. Q
  1. ;
  1. COMPLOS2 ; COMPUTE LENGTH OF STAY FOR ONE TD
  1. ; find in/re for same patient & component code/type before td
  1. S ACDCC=$P(ACDCCT,"/"),ACDCT=$P(ACDCCT,"/",2)
  1. S ACDVIEN=0,ACDINRE=0
  1. F S ACDVIEN=$O(^ACDVIS("D",ACDPIEN,ACDVIEN)) Q:'ACDVIEN I $D(^ACDVIS(ACDVIEN,0)) S X=^(0) D
  1. . Q:$G(^ACDVIS(ACDVIEN,"BWP"))'=ACDPGM
  1. . Q:$P(X,U,2)'=ACDCC
  1. . Q:$P(X,U,7)'=ACDCT
  1. . I $P(X,U,4)'="IN",$P(X,U,4)'="RE" Q
  1. . S X=$P(X,U)
  1. . Q:X>ACDDATE
  1. . S:X>ACDINRE ACDINRE=X
  1. . Q
  1. Q:'ACDINRE
  1. S X2=ACDINRE,X1=ACDDATE
  1. D ^%DTC
  1. Q:'%Y
  1. S ^TMP("ACDRR1",$J,1,"LOS","T",ACDCCT,"TOTAL")=$G(^TMP("ACDRR1",$J,1,"LOS","T",ACDCCT,"TOTAL"))+X
  1. S ^TMP("ACDRR1",$J,1,"LOS","T",ACDCCT,"COUNT")=$G(^TMP("ACDRR1",$J,1,"LOS","T",ACDCCT,"COUNT"))+1
  1. Q