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

BDGAD2.m

Go to the documentation of this file.
  1. BDGAD2 ; IHS/ANMC/LJF - A&D WARD TRANSFERS ; [ 02/10/2005 4:05 PM ]
  1. ;;5.3;PIMS;**1001,1002,1012,1019**;APR 26, 2002;Build 3
  1. ;
  1. LOOP ;--loop ward transfers
  1. NEW DGDT,DFN,IFN
  1. S DGDT=DGBEG
  1. F S DGDT=$O(^DGPM("AMV2",DGDT)) Q:'DGDT!(DGDT>DGEND) D
  1. . S DFN=0 F S DFN=$O(^DGPM("AMV2",DGDT,DFN)) Q:'DFN D
  1. .. S IFN=0 F S IFN=$O(^DGPM("AMV2",DGDT,DFN,IFN)) Q:'IFN D GATHER
  1. Q
  1. ;
  1. GATHER ; gather info on ward transfers and put counts into arrays
  1. NEW ADM,ADULT,NEWWD,OLDWD,OLDSV,OLDSVN,NEWSV,NEWSVN,X,NAME,LOS
  1. S ADM=$P(^DGPM(IFN,0),U,14) ;admit ien
  1. S ADULT=$S($$AGE<$$ADULT^BDGPAR:0,1:1) ;1=adult, 0=peds
  1. ;
  1. ;S NEWWD=$P($G(^DGPM(IFN,0)),U,6) I 'NEWWD S NEWWD="??" ;new ward cmi/maw 4/23/2010 orig line
  1. S NEWWD=$P($G(^DGPM(IFN,0)),U,6) Q:'NEWWD ;new ward cmi/maw 4/23/2010 new ling
  1. S OLDWD=$P($G(^DGPM(+$$PRIORMVT^BDGF1(DGDT,ADM,DFN),0)),U,6) ;old ward
  1. Q:'$G(OLDWD) ;cmi/maw 4/23/2010 if old ward is blank patch 1012
  1. ;
  1. S OLDSV=$P(^DGPM(+$$PRIORTXN^BDGF1(DGDT,ADM,DFN),0),U,9) ;old srv
  1. Q:'$G(OLDSV) ;cmi/maw 4/23/2010 if old service is blank PATCH 1012
  1. S X=$O(^DGPM("AMV6",DGDT,DFN,0))
  1. S NEWSV=$S('X:OLDSV,X:$P($G(^DGPM(X,0)),U,9),1:OLDSV) ;new srv
  1. ;IHS/ITSC/WAR 1/21/2005 PATCH #1002 Added next line, defensive code for Pc9 being NULL (only a bed change on transfer record)
  1. ; Interward change - has no ward change, nor srv change
  1. I 'NEWSV S NEWSV=OLDSV
  1. S OLDSVN=$$GET1^DIQ(45.7,OLDSV,.01)
  1. S NEWSVN=$$GET1^DIQ(45.7,NEWSV,.01)
  1. ;
  1. S LOS=$$FMDIFF^XLFDT(DGDT,+$G(^DGPM(+$$PRIORMVT^BDGF1(DGDT,ADM,DFN),0)))
  1. ;
  1. ; collect patient data for report
  1. S NAME=$$GET1^DIQ(2,DFN,.01)
  1. Q:$$DEMO^APCLUTL(DFN,"E") ;ihs/cmi/maw patch 1019
  1. S ^TMP("BDGAD",$J,"WARD",NAME,DFN,IFN)=OLDWD_U_NEWWD
  1. I OLDSV'=NEWSV S ^TMP("BDGAD",$J,"SERV",NAME,DFN,IFN)=OLDSV_U_NEWSV ;IHS/ITSC/LJF 7/7/2004 PATCH #1001
  1. Q:$G(BDGREP) ;reprint, not recalculating
  1. ;
  1. ; -- increment counts in ADT Census files
  1. ; --- transfer in to new ward
  1. S $P(^BDGCWD(NEWWD,1,BDGT,0),U,5)=$P($G(^BDGCWD(NEWWD,1,BDGT,0)),U,5)+1
  1. ;
  1. ; --- transfer in for service within ward by age
  1. ; ---- set zero node if needed
  1. I '$D(^BDGCWD(NEWWD,1,BDGT,1,NEWSV)) D
  1. . S ^BDGCWD(NEWWD,1,BDGT,1,NEWSV,0)=NEWSV
  1. . S $P(^BDGCWD(NEWWD,1,BDGT,1,0),U,3,4)=NEWSV_U_($P(^BDGCWD(NEWWD,1,BDGT,1,0),U,4)+1)
  1. ;
  1. I '$D(^BDGCTX(NEWSV,1,BDGT,0)) D
  1. . S ^BDGCTX(NEWSV,1,BDGT,0)=BDGT
  1. I ADULT D
  1. . S $P(^BDGCWD(NEWWD,1,BDGT,1,NEWSV,0),U,5)=$P($G(^BDGCWD(NEWWD,1,BDGT,1,NEWSV,0)),U,5)+1
  1. . I NEWSV'=OLDSV S $P(^BDGCTX(NEWSV,1,BDGT,0),U,5)=$P($G(^BDGCTX(NEWSV,1,BDGT,0)),U,5)+1
  1. I 'ADULT D
  1. . S $P(^BDGCWD(NEWWD,1,BDGT,1,NEWSV,0),U,15)=$P($G(^BDGCWD(NEWWD,1,BDGT,1,NEWSV,0)),U,15)+1
  1. . I NEWSV'=OLDSV S $P(^BDGCTX(NEWSV,1,BDGT,0),U,15)=$P($G(^BDGCTX(NEWSV,1,BDGT,0)),U,15)+1
  1. ;
  1. ;
  1. ; --- transfer out of old ward
  1. S $P(^BDGCWD(OLDWD,1,BDGT,0),U,6)=$P($G(^BDGCWD(OLDWD,1,BDGT,0)),U,6)+1
  1. ; ---- increment LOS for old ward
  1. S $P(^BDGCWD(OLDWD,1,BDGT,0),U,9)=$P($G(^BDGCWD(OLDWD,1,BDGT,0)),U,9)+LOS
  1. ;
  1. ; --- increment transfer out for service with in ward by age
  1. ; ---- set zero node if needed
  1. I '$D(^BDGCWD(OLDWD,1,BDGT,1,OLDSV)) D
  1. . S ^BDGCWD(OLDWD,1,BDGT,1,OLDSV,0)=OLDSV
  1. . S $P(^BDGCWD(OLDWD,1,BDGT,1,0),U,3,4)=OLDSV_U_($P(^BDGCWD(OLDWD,1,BDGT,1,0),U,4)+1)
  1. ;
  1. I ADULT D
  1. . S $P(^BDGCWD(OLDWD,1,BDGT,1,OLDSV,0),U,6)=$P($G(^BDGCWD(OLDWD,1,BDGT,1,OLDSV,0)),U,6)+1
  1. . S $P(^BDGCWD(OLDWD,1,BDGT,1,OLDSV,0),U,9)=$P($G(^BDGCWD(OLDWD,1,BDGT,1,OLDSV,0)),U,9)+LOS
  1. . I OLDSV'=NEWSV S $P(^BDGCTX(OLDSV,1,BDGT,0),U,6)=$P($G(^BDGCTX(OLDSV,1,BDGT,0)),U,6)+1
  1. . I OLDSV'=NEWSV S $P(^BDGCTX(OLDSV,1,BDGT,0),U,9)=$P($G(^BDGCTX(OLDSV,1,BDGT,0)),U,9)+LOS
  1. ;
  1. I 'ADULT D
  1. . S $P(^BDGCWD(OLDWD,1,BDGT,1,OLDSV,0),U,16)=$P($G(^BDGCWD(OLDWD,1,BDGT,1,OLDSV,0)),U,16)+1
  1. . S $P(^BDGCWD(OLDWD,1,BDGT,1,OLDSV,0),U,19)=$P($G(^BDGCWD(OLDWD,1,BDGT,1,OLDSV,0)),U,19)+LOS
  1. . I OLDSV'=NEWSV S $P(^BDGCTX(OLDSV,1,BDGT,0),U,16)=$P($G(^BDGCTX(OLDSV,1,BDGT,0)),U,16)+1
  1. . I OLDSV'=NEWSV S $P(^BDGCTX(OLDSV,1,BDGT,0),U,19)=$P($G(^BDGCTX(OLDSV,1,BDGT,0)),U,19)+LOS
  1. ;
  1. Q
  1. ;
  1. AGE() ;--age at admit
  1. NEW X,X1,X2
  1. S X1=+$G(^DGPM(ADM,0)) ;admit date
  1. S X2=$P($G(^DPT(DFN,0)),U,3) D ^%DTC ;date of birth
  1. Q:'X "" Q X\365.25
  1. ;