- DGA4004 ;ALB/MRL - AMIS 420 ACTUAL GENERATION OF REPORTS ;01 JAN 1988@2300
- ;;5.3;Registration;**41,1015**;Aug 13, 1993;Build 21
- ;S IOP=$S($D(ION):ION,1:IO)_";132" D ^%ZIS K IOP I IO=DGDEV W !!,"===> Collecting AMIS 401-420 Statistics..."
- I IO=DGDEV W !!,"===> Collecting AMIS 401-420 Statistics..."
- D DEL^DGA4003 K ^UTILITY($J,"DGSEG"),^("DGSEGP") D DIV^DGUTL
- S DGDV=DGDIV F DFN=0:0 S DFN=$O(^UTILITY($J,"DGDIS",DFN)) Q:'DFN F DGREG=0:0 S DGREG=$O(^UTILITY($J,"DGDIS",DFN,DGREG)) Q:'DGREG S DGDATA=^(DGREG),DGDISLO=$P(DGDATA,"^",6) D REP
- I $D(^UTILITY($J,"DGSEG")) W:IO=DGDEV !!,"===> Storing Data in 'AMIS SEGMENT' file..." G SAV^DGA4005
- G QUIT^DGA4002
- REP S (DGSEG,DGSEGR)="" I $P(DGDATA,"^",17),$P(DGDATA,"^",17)<418 S DGSEG=$P(DGDATA,"^",17)
- S X1=$S($D(^DIC(8,+$P(DGDATA,"^",13),0)):$P(^(0),"^",5),1:"") I X1'="Y" S DGSEG=420,DGSEGR="NV"
- I 'DGSEG S DGXXXD=1,DGDATA1=DGDATA D SEG1
- I 'DGDIV S I=$P(DGDATA,"^",4) D DV^DGA4001
- S DGBLK="",DGX=$S($D(^DIC(37,+$P(DGDATA,"^",7),0)):^(0),1:""),DGX1=+$P(DGX,"^",9),DGBLK=$S(DGSEGR="NV":40,DGX']"":8,'DGX1:8,1:"") I DGBLK G GOTIT
- I "^TRT^INE^LOW^"'[("^"_$E(DGX,1,3)_"^") S DGBLK=DGBLK_$P("10^8^6^7^8^2^3^4^5^9^8^8^38^8^39","^",DGX1)_"^" G GOTIT
- S DGX2=+$P(DGDATA,"^",3),DGX2=$S(DGX2=1:1,DGX2=2:3,DGX2=5:2,1:4) I "^INE^"[("^"_$E(DGX,1,3)_"^") S DGX3=+$P(DGDATA,"^",11),DGBLK=DGBLK_(DGX3+10)_"^"_(DGX2+15)_"^"_$S(DGX1=2:20,1:21)_"^" G GOTIT
- I "^TRT^"[("^"_$E(DGX,1,3)_"^") S DGBLK=DGBLK_(DGX2+21)_"^"_$S(DGX1=2:26,DGX1=14:27,DGX1=5:28,1:29)_"^" G GOTIT
- S DGBLK=DGBLK_(DGX2+29)_"^"_$S(DGX1=2:34,DGX1=14:35,DGX1=5:36,1:37)_"^"
- GOTIT S DGBLK="1^"_DGBLK,DGN1="",DGN=$S($D(^UTILITY($J,"DGSEG",DGSEG,+DGDV)):^(+DGDV),1:"") F I=1:1 S J=$P(DGBLK,"^",I) Q:J="" S $P(DGN,"^",J)=$P(DGN,"^",J)+1 I J>1 S DGN1=DGN1_$S(J<10:"0"_J,1:J)_","
- W:IO=DGDEV "." S ^UTILITY($J,"DGSEG",DGSEG,+DGDV)=DGN Q:'DGAL
- S X=$S($D(^DPT(DFN,0)):^(0),1:""),X1=$S($P(X,"^",1)'="":$P(X,"^",1),1:"PATIENT #"_DFN),X2=$E($P(X1,",",1)_","_$E(X1,$F(X1,",")),1,15),$P(DGN1,"^",2)=$E($P(X,"^",9),6,9)_"^"_$S($D(^DIC(8,+$P(DGDATA,"^",13),0)):$P(^(0),"^",6),1:"UNKNOWN")
- S $P(DGN1,"^",4)=$S($P(DGDATA,"^",3)=1:"Hosp Care",$P(DGDATA,"^",3)=2:"Dom Care",$P(DGDATA,"^",3)=3:"OP Medical",$P(DGDATA,"^",3)=4:"OP Dental",$P(DGDATA,"^",3)=5:"NHCU Care",1:"Unknown"),$P(DGN1,"^",5)=$E(DGX,1,30)
- S ^UTILITY($J,"DGSEGP",+DGDV,DGSEG,X2,+DGDATA)=DGN1 Q
- SEG ;Determine Segment to count patient in
- S DGSEG="",DGDATA1=$S($D(^DPT(DFN,"DIS",DFN1,0)):^(0),1:"") Q:'DGDATA1
- SEG1 S DGSEGR="" G SEG2:'$P(DGDATA1,"^",15) S X=$P(DGDATA1,"^",16) I X']""!(X#10) S DGSEG=412 G SEGQ
- I 'X S DGSEG=411 G SEGQ
- S X=X/10,DGSEG=$P("410^409^408^407^406^405^404^403^402^401","^",X) G SEGQ
- SEG2 S X1=$S($D(^DIC(8,+$P(DGDATA1,"^",13),0)):$P(^(0),"^",5),1:"") I X1'="Y" S DGSEGR="NV",DGSEG=420 G SEGQ
- S X=$S($D(^DIC(8,+$P(DGDATA1,"^",13),0)):$P(^(0),"^",9),1:"") I X']"" G CAT:DGXXXD,SEGQ
- I X=18 S DGSEG=413 G SEGQ
- S X1=$S($D(^DPT(DFN,.321)):^(.321),1:"") I $P(X1,"^",2)="Y"!($P(X1,"^",3)="Y") S DGSEG=414 G SEGQ
- I X=16!(X=17) S DGSEG=415 G SEGQ
- I X=4 S DGSEG=416 G SEGQ
- I $P($G(^DPT(DFN,.38)),U) S DGSEG=417 G SEGQ
- G SEGQ:'DGXXXD
- CAT ;Determine Category for others
- I '$D(^DGMT(408.31,"AD",1,DFN)) S DGSEGR="NM",DGSEG=418 G SEGQ
- S DGLSTMN=$P($$LST^DGMTU(DFN,+DGDISLO),U,4)
- I DGLSTMN']"" S DGSEGR="NT",DGSEG=418 G SEGQ
- S DGSEG=$S(DGLSTMN="B":419,"CP"[DGLSTMN:420,1:418),DGSEGR=DGLSTMN
- SEGQ K DGZ,DGZ1,DGZ2,X,X1,DGDATA1,DGLSTMN I 'DGXXXD K DGSEGR Q
- I $D(DGSEG),$D(^DPT(DFN,"DIS",DGREG,0)) S $P(^(0),"^",17)=DGSEG
- Q
- DGA4004 ;ALB/MRL - AMIS 420 ACTUAL GENERATION OF REPORTS ;01 JAN 1988@2300
- +1 ;;5.3;Registration;**41,1015**;Aug 13, 1993;Build 21
- +2 ;S IOP=$S($D(ION):ION,1:IO)_";132" D ^%ZIS K IOP I IO=DGDEV W !!,"===> Collecting AMIS 401-420 Statistics..."
- +3 IF IO=DGDEV
- WRITE !!,"===> Collecting AMIS 401-420 Statistics..."
- +4 DO DEL^DGA4003
- KILL ^UTILITY($JOB,"DGSEG"),^("DGSEGP")
- DO DIV^DGUTL
- +5 SET DGDV=DGDIV
- FOR DFN=0:0
- SET DFN=$ORDER(^UTILITY($JOB,"DGDIS",DFN))
- IF 'DFN
- QUIT
- FOR DGREG=0:0
- SET DGREG=$ORDER(^UTILITY($JOB,"DGDIS",DFN,DGREG))
- IF 'DGREG
- QUIT
- SET DGDATA=^(DGREG)
- SET DGDISLO=$PIECE(DGDATA,"^",6)
- DO REP
- +6 IF $DATA(^UTILITY($JOB,"DGSEG"))
- IF IO=DGDEV
- WRITE !!,"===> Storing Data in 'AMIS SEGMENT' file..."
- GOTO SAV^DGA4005
- +7 GOTO QUIT^DGA4002
- REP SET (DGSEG,DGSEGR)=""
- IF $PIECE(DGDATA,"^",17)
- IF $PIECE(DGDATA,"^",17)<418
- SET DGSEG=$PIECE(DGDATA,"^",17)
- +1 SET X1=$SELECT($DATA(^DIC(8,+$PIECE(DGDATA,"^",13),0)):$PIECE(^(0),"^",5),1:"")
- IF X1'="Y"
- SET DGSEG=420
- SET DGSEGR="NV"
- +2 IF 'DGSEG
- SET DGXXXD=1
- SET DGDATA1=DGDATA
- DO SEG1
- +3 IF 'DGDIV
- SET I=$PIECE(DGDATA,"^",4)
- DO DV^DGA4001
- +4 SET DGBLK=""
- SET DGX=$SELECT($DATA(^DIC(37,+$PIECE(DGDATA,"^",7),0)):^(0),1:"")
- SET DGX1=+$PIECE(DGX,"^",9)
- SET DGBLK=$SELECT(DGSEGR="NV":40,DGX']"":8,'DGX1:8,1:"")
- IF DGBLK
- GOTO GOTIT
- +5 IF "^TRT^INE^LOW^"'[("^"_$EXTRACT(DGX,1,3)_"^")
- SET DGBLK=DGBLK_$PIECE("10^8^6^7^8^2^3^4^5^9^8^8^38^8^39","^",DGX1)_"^"
- GOTO GOTIT
- +6 SET DGX2=+$PIECE(DGDATA,"^",3)
- SET DGX2=$SELECT(DGX2=1:1,DGX2=2:3,DGX2=5:2,1:4)
- IF "^INE^"[("^"_$EXTRACT(DGX,1,3)_"^")
- SET DGX3=+$PIECE(DGDATA,"^",11)
- SET DGBLK=DGBLK_(DGX3+10)_"^"_(DGX2+15)_"^"_$SELECT(DGX1=2:20,1:21)_"^"
- GOTO GOTIT
- +7 IF "^TRT^"[("^"_$EXTRACT(DGX,1,3)_"^")
- SET DGBLK=DGBLK_(DGX2+21)_"^"_$SELECT(DGX1=2:26,DGX1=14:27,DGX1=5:28,1:29)_"^"
- GOTO GOTIT
- +8 SET DGBLK=DGBLK_(DGX2+29)_"^"_$SELECT(DGX1=2:34,DGX1=14:35,DGX1=5:36,1:37)_"^"
- GOTIT SET DGBLK="1^"_DGBLK
- SET DGN1=""
- SET DGN=$SELECT($DATA(^UTILITY($JOB,"DGSEG",DGSEG,+DGDV)):^(+DGDV),1:"")
- FOR I=1:1
- SET J=$PIECE(DGBLK,"^",I)
- IF J=""
- QUIT
- SET $PIECE(DGN,"^",J)=$PIECE(DGN,"^",J)+1
- IF J>1
- SET DGN1=DGN1_$SELECT(J<10:"0"_J,1:J)_","
- +1 IF IO=DGDEV
- WRITE "."
- SET ^UTILITY($JOB,"DGSEG",DGSEG,+DGDV)=DGN
- IF 'DGAL
- QUIT
- +2 SET X=$SELECT($DATA(^DPT(DFN,0)):^(0),1:"")
- SET X1=$SELECT($PIECE(X,"^",1)'="":$PIECE(X,"^",1),1:"PATIENT #"_DFN)
- SET X2=$EXTRACT($PIECE(X1,",",1)_","_$EXTRACT(X1,$FIND(X1,",")),1,15)
- SET $PIECE(DGN1,"^",2)=$EXTRACT($PIECE(X,"^",9),6,9)_"^"_$SELECT($DATA(^DIC(8,+$PIECE(DGDATA,"^",13),0)):$PIECE(^(0),"^",6),1:"UNKNOWN")
- +3 SET $PIECE(DGN1,"^",4)=$SELECT($PIECE(DGDATA,"^",3)=1:"Hosp Care",$PIECE(DGDATA,"^",3)=2:"Dom Care",$PIECE(DGDATA,"^",3)=3:"OP Medical",$PIECE(DGDATA,"^",3)=4:"OP Dental",$PIECE(DGDATA,"^",3)=5:"NHCU Care",1:"Unknown")
- SET $PIECE(DGN1,"^",5)=$EXTRACT(DGX,1,30)
- +4 SET ^UTILITY($JOB,"DGSEGP",+DGDV,DGSEG,X2,+DGDATA)=DGN1
- QUIT
- SEG ;Determine Segment to count patient in
- +1 SET DGSEG=""
- SET DGDATA1=$SELECT($DATA(^DPT(DFN,"DIS",DFN1,0)):^(0),1:"")
- IF 'DGDATA1
- QUIT
- SEG1 SET DGSEGR=""
- IF '$PIECE(DGDATA1,"^",15)
- GOTO SEG2
- SET X=$PIECE(DGDATA1,"^",16)
- IF X']""!(X#10)
- SET DGSEG=412
- GOTO SEGQ
- +1 IF 'X
- SET DGSEG=411
- GOTO SEGQ
- +2 SET X=X/10
- SET DGSEG=$PIECE("410^409^408^407^406^405^404^403^402^401","^",X)
- GOTO SEGQ
- SEG2 SET X1=$SELECT($DATA(^DIC(8,+$PIECE(DGDATA1,"^",13),0)):$PIECE(^(0),"^",5),1:"")
- IF X1'="Y"
- SET DGSEGR="NV"
- SET DGSEG=420
- GOTO SEGQ
- +1 SET X=$SELECT($DATA(^DIC(8,+$PIECE(DGDATA1,"^",13),0)):$PIECE(^(0),"^",9),1:"")
- IF X']""
- IF DGXXXD
- GOTO CAT
- GOTO SEGQ
- +2 IF X=18
- SET DGSEG=413
- GOTO SEGQ
- +3 SET X1=$SELECT($DATA(^DPT(DFN,.321)):^(.321),1:"")
- IF $PIECE(X1,"^",2)="Y"!($PIECE(X1,"^",3)="Y")
- SET DGSEG=414
- GOTO SEGQ
- +4 IF X=16!(X=17)
- SET DGSEG=415
- GOTO SEGQ
- +5 IF X=4
- SET DGSEG=416
- GOTO SEGQ
- +6 IF $PIECE($GET(^DPT(DFN,.38)),U)
- SET DGSEG=417
- GOTO SEGQ
- +7 IF 'DGXXXD
- GOTO SEGQ
- CAT ;Determine Category for others
- +1 IF '$DATA(^DGMT(408.31,"AD",1,DFN))
- SET DGSEGR="NM"
- SET DGSEG=418
- GOTO SEGQ
- +2 SET DGLSTMN=$PIECE($$LST^DGMTU(DFN,+DGDISLO),U,4)
- +3 IF DGLSTMN']""
- SET DGSEGR="NT"
- SET DGSEG=418
- GOTO SEGQ
- +4 SET DGSEG=$SELECT(DGLSTMN="B":419,"CP"[DGLSTMN:420,1:418)
- SET DGSEGR=DGLSTMN
- SEGQ KILL DGZ,DGZ1,DGZ2,X,X1,DGDATA1,DGLSTMN
- IF 'DGXXXD
- KILL DGSEGR
- QUIT
- +1 IF $DATA(DGSEG)
- IF $DATA(^DPT(DFN,"DIS",DGREG,0))
- SET $PIECE(^(0),"^",17)=DGSEG
- +2 QUIT