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

BCHRU11.m

Go to the documentation of this file.
BCHRU11 ; IHS/CMI/LAB - PROCESS REPORT ; 
 ;;2.0;IHS RPMS CHR SYSTEM;;OCT 23, 2012;Build 27
 ;IHS/CMI/LAB - tmp to xtmp
 ;
 ;
 ;
 ;
START ;
 S (BCHBT,BCHBTH)=$H,BCHJOB=$J
 K ^XTMP("BCHRU1",BCHJOB,BCHBT)
 D XTMP^BCHUTIL("BCHRU1","CHR UNDUP REPORT")
 D D,END
 Q
 ;
D ; Run by date of service
 S (BCHPATS,BCHPATS("F"),BCHPATS("M"),BCHPATS("ST"))=0
 S X1=BCHBD,X2=-1 D C^%DTC S BCHSD=X
 S BCHODAT=BCHSD_".9999" F  S BCHODAT=$O(^BCHR("B",BCHODAT)) Q:BCHODAT=""!((BCHODAT\1)>BCHED)  D D1
 Q
 ;
END ;
 S BCHET=$H
 D EOJ
 Q
EOJ ;
 Q
D1 ;
 S (BCHR,BCHRCNT)=0
 F  S BCHR=$O(^BCHR("B",BCHODAT,BCHR)) Q:BCHR'=+BCHR  I $D(^BCHR(BCHR,0)),$P(^(0),U,2)]"",$P(^(0),U,3)]"" S BCHR0=^(0) D PROC
 Q
PROC ;
 S BCHPROG=$P(BCHR0,U,2)
 I BCHPRG,BCHPRG'=BCHPROG Q
 S BCHPROV=$P(BCHR0,U,3)
 I BCHPROVT="O",BCHCHR1'=BCHPROV Q
 S BCHPAT=$P(BCHR0,U,4)
 S BCHNRPAT=$P($G(^BCHR(BCHR,11)),U,12)
 I 'BCHPAT,'BCHNRPAT Q   ;no patient
 I BCHREG="R",BCHPAT="" Q
 I BCHREG="N",BCHNRPAT="" Q
 I BCHPAT,BCHNRPAT S BCHNRPAT=""
 I BCHPAT Q:'$D(^DPT(BCHPAT,0))
 I BCHPAT S BCHSEX=$P(^DPT(BCHPAT,0),U,2)
 I BCHNRPAT S BCHSEX=$P($G(^BCHRPAT(BCHNRPAT,0)),U,3)
 I BCHSEX="" S BCHSEX="--"
 I BCHPAT S BCHTRIB=$$VAL^XBDIQ1(9000001,BCHPAT,1108)
 I BCHNRPAT S BCHTRIB=$$VAL^XBDIQ1(90002.11,BCHNRPAT,.05)
 I BCHTRIB="" S BCHTRIB="--"
 S (BCHX,BCHC)=0 F  S BCHX=$O(^BCHRPROB("AD",BCHR,BCHX)) Q:BCHX'=+BCHX  S BCHC=BCHC+1 I $P(^BCHRPROB(BCHX,0),U,4),$P(^BCHTSERV($P(^BCHRPROB(BCHX,0),U,4),0),U,3)'="LT" D @BCHRPT D
 .;BY 1ST LEVEL - TOTAL LINE
 .I BCHNRPAT D NON Q
 .S BCHPATS("ST")=BCHPATS("ST")+$P(^BCHRPROB(BCHX,0),U,5)
 .I '$D(^XTMP("BCHRU1",BCHJOB,BCHBT,"PATIENTS",BCHPAT)) D
 ..S BCHPATS=BCHPATS+1,BCHPATS(BCHSEX)=BCHPATS(BCHSEX)+1
 ..S ^XTMP("BCHRU1",BCHJOB,BCHBT,"PATIENTS",BCHPAT)=""
 .S $P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN),U,4)=$P($G(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN)),U,4)+$P(^BCHRPROB(BCHX,0),U,5)
 .S $P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1),U,4)=$P($G(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1)),U,4)+$P(^BCHRPROB(BCHX,0),U,5)
 .I '$D(^XTMP("BCHRU1",BCHJOB,BCHBT,"PATIENTS",BCHPAT,BCHPROBN)) D
 ..S $P(^(BCHPROBN),U)=$S($D(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN)):$P(^(BCHPROBN),U)+1,1:1)
 ..I BCHSEX="F" S $P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN),U,2)=$P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN),U,2)+1
 ..I BCHSEX="M" S $P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN),U,3)=$P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN),U,3)+1
 ..S ^XTMP("BCHRU1",BCHJOB,BCHBT,"PATIENTS",BCHPAT,BCHPROBN)=""
 .;SUBTOTALS
 .I '$D(^XTMP("BCHRU1",BCHJOB,BCHBT,"PATIENTS",BCHPAT,BCHPROBN,BCHSUB1)) D
 ..S $P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1),U)=$S($D(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1)):$P(^(BCHSUB1),U)+1,1:1)
 ..I BCHSEX="F" S $P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1),U,2)=$P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1),U,2)+1
 ..I BCHSEX="M" S $P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1),U,3)=$P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1),U,3)+1
 ..S ^XTMP("BCHRU1",BCHJOB,BCHBT,"PATIENTS",BCHPAT,BCHPROBN,BCHSUB1)=""
 Q
X ;health area
 S BCHPROB=$P(^BCHRPROB(BCHX,0),U)
 S BCHPROBN=$P(^BCHTPROB(BCHPROB,0),U)_"|"_$P(^BCHTPROB(BCHPROB,0),U,2)
 S BCHSUB1=$P(^BCHRPROB(BCHX,0),U,4)
 I BCHSUB1="" S BCHSUB1="NO ACTIVITY ENTERED|**" Q
 S BCHSUB1=$P(^BCHTSERV(BCHSUB1,0),U)_"|"_$P(^BCHTSERV(BCHSUB1,0),U,3)
 Q
Y ;activity
 S BCHPROB=$P(^BCHRPROB(BCHX,0),U,4)
 I BCHPROB="" S BCHPROBN="NO SERVICE ENTERED|**"
 I BCHPROB]"" S BCHPROBN=$P(^BCHTSERV(BCHPROB,0),U)_"|"_$P(^BCHTSERV(BCHPROB,0),U,3)
 S BCHSUB1=$P(^BCHRPROB(BCHX,0),U)
 I BCHSUB1="" S BCHSUB1="NO PROBLEM ENTERED|**" Q
 S BCHSUB1=$P(^BCHTPROB(BCHSUB1,0),U)_"|"_$P(^BCHTPROB(BCHSUB1,0),U,2)
 Q
1 ;CHR
 S BCHPROB=$$VAL^XBDIQ1(90002,BCHR,.03)
 I BCHPROB="" S BCHPROBN="NO CHR ENTERED|**"
 I BCHPROB]"" S BCHPROBN="|"_BCHPROB
 I BCHSUB3="H" D
 .S BCHSUB1=$P(^BCHRPROB(BCHX,0),U)
 .I BCHSUB1="" S BCHSUB1="NO PROBLEM ENTERED|**" Q
 .S BCHSUB1=$P(^BCHTPROB(BCHSUB1,0),U)_"|"_$P(^BCHTPROB(BCHSUB1,0),U,2)
 I BCHSUB3'="H" D
 .S BCHSUB1=$P(^BCHRPROB(BCHX,0),U,4)
 .I BCHSUB1="" S BCHSUB1="NO ACTIVITY ENTERED|**" Q
 .S BCHSUB1=$P(^BCHTSERV(BCHSUB1,0),U)_"|"_$P(^BCHTSERV(BCHSUB1,0),U,3)
 Q
2 ;age/hp
 I BCHPAT S BCHPROB=$$AGE^AUPNPAT(BCHPAT,BCHED),BCHPROB=$$PAD(BCHPROB,4)
 I BCHNRPAT S BCHPROB=$$AGE(BCHNRPAT,BCHED),BCHPROB=$$PAD(BCHPROB,4)
 S BCHPROBN="|"_BCHPROB
 I BCHSUB3="H" D
 .S BCHSUB1=$P(^BCHRPROB(BCHX,0),U)
 .I BCHSUB1="" S BCHSUB1="NO PROBLEM ENTERED|**" Q
 .S BCHSUB1=$P(^BCHTPROB(BCHSUB1,0),U)_"|"_$P(^BCHTPROB(BCHSUB1,0),U,2)
 I BCHSUB3'="H" D
 .S BCHSUB1=$P(^BCHRPROB(BCHX,0),U,4)
 .I BCHSUB1="" S BCHSUB1="NO ACTIVITY ENTERED|**" Q
 .S BCHSUB1=$P(^BCHTSERV(BCHSUB1,0),U)_"|"_$P(^BCHTSERV(BCHSUB1,0),U,3)
 Q
3 ;
 S BCHPROB=$S(BCHSEX="M":"MALE",BCHSEX="F":"FEMALE",1:"UNKNOWN")
 S BCHPROBN="|"_BCHPROB
 I BCHSUB3="H" D
 .S BCHSUB1=$P(^BCHRPROB(BCHX,0),U)
 .I BCHSUB1="" S BCHSUB1="NO PROBLEM ENTERED|**" Q
 .S BCHSUB1=$P(^BCHTPROB(BCHSUB1,0),U)_"|"_$P(^BCHTPROB(BCHSUB1,0),U,2)
 I BCHSUB3'="H" D
 .S BCHSUB1=$P(^BCHRPROB(BCHX,0),U,4)
 .I BCHSUB1="" S BCHSUB1="NO ACTIVITY ENTERED|**" Q
 .S BCHSUB1=$P(^BCHTSERV(BCHSUB1,0),U)_"|"_$P(^BCHTSERV(BCHSUB1,0),U,3)
 Q
4 ;
 S BCHPROB=BCHTRIB
 S BCHPROBN="|"_BCHPROB
 I BCHSUB3="H" D
 .S BCHSUB1=$P(^BCHRPROB(BCHX,0),U)
 .I BCHSUB1="" S BCHSUB1="NO PROBLEM ENTERED|**" Q
 .S BCHSUB1=$P(^BCHTPROB(BCHSUB1,0),U)_"|"_$P(^BCHTPROB(BCHSUB1,0),U,2)
 I BCHSUB3'="H" D
 .S BCHSUB1=$P(^BCHRPROB(BCHX,0),U,4)
 .I BCHSUB1="" S BCHSUB1="NO ACTIVITY ENTERED|**" Q
 .S BCHSUB1=$P(^BCHTSERV(BCHSUB1,0),U)_"|"_$P(^BCHTSERV(BCHSUB1,0),U,3)
 Q
5 ;
 S BCHPROB=$$VAL^XBDIQ1(90002,BCHR,.02)
 I BCHPROB="" S BCHPROBN="NO PROGRAM ENTERED|**"
 I BCHPROB]"" S BCHPROBN=$$VAL^XBDIQ1(90002,BCHR,.029)_"|"_BCHPROB
 I BCHSUB3="H" D
 .S BCHSUB1=$P(^BCHRPROB(BCHX,0),U)
 .I BCHSUB1="" S BCHSUB1="NO PROBLEM ENTERED|**" Q
 .S BCHSUB1=$P(^BCHTPROB(BCHSUB1,0),U)_"|"_$P(^BCHTPROB(BCHSUB1,0),U,2)
 I BCHSUB3'="H" D
 .S BCHSUB1=$P(^BCHRPROB(BCHX,0),U,4)
 .I BCHSUB1="" S BCHSUB1="NO ACTIVITY ENTERED|**" Q
 .S BCHSUB1=$P(^BCHTSERV(BCHSUB1,0),U)_"|"_$P(^BCHTSERV(BCHSUB1,0),U,3)
 Q
PAD(D,L) ; -- SUBRTN to pad length of data
 ; -- D=data L=length
 S L=L-$L(D)
 Q $E($$REPEAT^XLFSTR(" ",L),1,L)_D
 ;
NON ;
 S BCHPATS("ST")=BCHPATS("ST")+$P(^BCHRPROB(BCHX,0),U,5)
 I '$D(^XTMP("BCHRU1",BCHJOB,BCHBT,"NON REG",BCHNRPAT)) D
 .S BCHPATS=BCHPATS+1,BCHPATS(BCHSEX)=$G(BCHPATS(BCHSEX))+1
 .S ^XTMP("BCHRU1",BCHJOB,BCHBT,"NON REG",BCHNRPAT)=""
 S $P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN),U,4)=$P($G(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN)),U,4)+$P(^BCHRPROB(BCHX,0),U,5)
 S $P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1),U,4)=$P($G(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1)),U,4)+$P(^BCHRPROB(BCHX,0),U,5)
 I '$D(^XTMP("BCHRU1",BCHJOB,BCHBT,"NON REG",BCHNRPAT,BCHPROBN)) D
 .S $P(^(BCHPROBN),U)=$S($D(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN)):$P(^(BCHPROBN),U)+1,1:1)
 .I BCHSEX="F" S $P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN),U,2)=$P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN),U,2)+1
 .I BCHSEX="M" S $P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN),U,3)=$P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN),U,3)+1
 .S ^XTMP("BCHRU1",BCHJOB,BCHBT,"NON REG",BCHNRPAT,BCHPROBN)=""
 ;SUBTOTALS
 I '$D(^XTMP("BCHRU1",BCHJOB,BCHBT,"NON REG",BCHNRPAT,BCHPROBN,BCHSUB1)) D
 .S $P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1),U)=$S($D(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1)):$P(^(BCHSUB1),U)+1,1:1)
 .I BCHSEX="F" S $P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1),U,2)=$P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1),U,2)+1
 .I BCHSEX="M" S $P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1),U,3)=$P(^XTMP("BCHRU1",BCHJOB,BCHBT,"DATA",BCHPROBN,BCHSUB1),U,3)+1
 .S ^XTMP("BCHRU1",BCHJOB,BCHBT,"NON REG",BCHNRPAT,BCHPROBN,BCHSUB1)=""
 Q
AGE(P,E) ;
 NEW D,A,%
 S F="Y"
 S D=$P($G(^BCHRPAT(P,0)),U,2)
 I D="" Q "??"
 S %=$$FMDIFF^XLFDT(E,D)
 S %1=%\365.25
 I F="Y" Q %1
 Q $S(%1>2:%1_" YRS",%<31:%_" DYS",1:%\30_" MOS")