AHIPAS04 ;NC/RLP Compute LOS for each Patient on every Ward 18-Oct-02
;v1.0
;
;
DEV K IO("Q") S %ZIS("B")="NETSERVER" D ^%ZIS I POP G EXIT
U IO
;
W !!!,"NEED TO ADD nsc/sc INFO instead of just having the SC%",!!!
Q
EN1 S BgnDate=3011001 ; --- Begin of FY02
S EndDate=3020930 ; --- End of FY02
S Count=0 ; --- Primary Key for MS Access
;
S DFN=0
F S DFN=$O(^DGPT("B",DFN)) Q:'DFN D ;
. S IEN=0
. F S IEN=$O(^DGPT("B",DFN,IEN)) Q:'IEN D ;
. . ;
. . ; --- Get the 0 node & 70 node for the PTF record
A . . S PTF0=$G(^DGPT(IEN,0))
. . S PTF70=$G(^DGPT(IEN,70))
. . ;
. . ; --- Screen out Fee Basis & Census records
SCRN . . S FeeBasis=+$P(PTF0,U,4) I FeeBasis=1 Q
. . S TypRcrd=+$P(PTF0,U,11) I TypRcrd'=1 Q
. . ;
. . S AdmtDt=$P($P(PTF0,U,2),".",1)
. . S DschDt=$P($P(PTF70,U,1),".",1)
. . ;
. . ; --- Verify record falls within Date Range
B . . I DschDt]"",DschDt<BgnDate Q
. . I AdmtDt>EndDate Q
. . ;
. . ; --- Get Patient Information
PAT . . D DEM^VADPT S PatName=VADM(1),SSN=VADM(2)
. . D ELIG^VADPT S SC=$P(VAEL(3),"^",2) I SC']"" S SC=0
. . D ADD^VADPT S Zip=VAPA(6),County=$P(VAPA(7),U,2)
. . ;
. . ; --- Loop thru the Physical Movements in the PTF record
. . ; --- First (FstMvDt) & Second (SndMvDt) updated for each change
MAIN . . S FstMvDt=AdmtDt
. . S PhyMv=0,ScndTime=0,HsptlWrd=0
. . S WardLTC=0,WardHspt=0
. . ;
. . F S PhyMv=$O(^DGPT(IEN,535,PhyMv)) Q:'PhyMv D S FstMvDt=SndMvDt,S
cndTime=1
. . . I ScndTime=1,FstMvDt=EndDate Q
. . . S PTF535=^DGPT(IEN,535,PhyMv,0)
. . . S SndMvDt=$P($P(PTF535,U,10),".",1)
. . . I SndMvDt]"",SndMvDt<BgnDate Q
. . . I SndMvDt]"",SndMvDt>EndDate S SndMvDt=EndDate
. . . I FstMvDt<BgnDate S FstMvDt=BgnDate
. . . I SndMvDt']"" S SndMvDt=EndDate
. . . S LOS=$$FMDIFF^XLFDT(SndMvDt,FstMvDt,1)
. . . I LOS=0 S LOS=1
. . . ;
WARDS . . . S ILsngWrd=$P(PTF535,U,6)
. . . S XLsngWrd=$P($G(^DIC(42,ILsngWrd,0)),U,1)
. . . S LsngWard="^"_ILsngWrd_"^"
. . . ;
. . . ; --- LTC areas 1st: NHCU 2nd: Dom 3rd: PRRTP
LTC . . . I "^104^251^252^224^108^249^101^102^80^87^79^86^"[LsngWard S WardL
TC=1,WardHspt=0
. . . I "^62^97^247^233^234^"[LsngWard S WardLTC=1,WardHspt=0
. . . I "^237^235^"[LsngWard S WardLTC=1,WardHspt=0
. . . ;
. . . ; --- hospital areas 1st: Psych 2nd: Gen Med 3rd: Observation
HSP . . . I "^53^54^232^95^51^106^231^"[LsngWard S WardHspt=1,WardLTC=0
. . . I "^236^65^66^"[LsngWard S WardHspt=1,WardLTC=0
. . . I "^242^243^245^239^238^248^246^244^"[LsngWard S WardHspt=1,WardLT
C=0
. . . ;
. . . ; --- Review/Troubleshoot if Flag is 0 - This status is OK!
. . . ; --- 1 - Why are both wards set?
. . . ; --- 2 - Ward not identified!
FLAG . . . S Flag=0
. . . I WardLTC,WardHspt S Flag=1 S (WardLTC,WardHspt)=0
. . . I 'Flag,'WardLTC,'WardHspt S Flag=2
. . . ;
. . . S XFstMvDt=$$ENTRY^RGUTDT(FstMvDt,0000)
. . . S XSndMvDt=$$ENTRY^RGUTDT(SndMvDt,0000)
. . . S Count=Count+1
. . . ;
. . . W !,Count,U,TypRcrd,U,IEN,U,PhyMv,U,DFN,U,PatName,U,SSN,U
. . . W Zip,U,County,U,SC,U,XLsngWrd,U,LOS,U,XFstMvDt,U,XSndMvDt,U
. . . W Flag,U
;
EXIT D ^%ZISC
K AdmtDt,BgnDate,Count,County,DFN,DschDt,EndDate,Flag,FeeBasis
K FstMvDt,IEN,ILsngWrd,LOS,LsngWard,POP,PTF0,PTF535,PTF70,PatName
K PhyMv,SC,SSN,SndMvDt,ScndTime,TypRcrd,VADM,VAEL,VAPA,WardHspt
K WardLTC,XFstMvDt,XLsngWrd,XSndMvDt,Zip
Q