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

DGRRPSAD.m

Go to the documentation of this file.
  1. DGRRPSAD ; ALB/SGG - rtnDGRR PatientServices ADT Information ;09/30/03 ; Compiled December 9, 2003 15:22:22
  1. ;;5.3;Registration;**557,1015**;Aug 13, 1993;Build 21
  1. ;
  1. DOC ;<DataSet Name='ADT'
  1. ;
  1. ;.102 CURRENT MOVEMENT (*P405'), [.102;1]
  1. ; FILE (#405) PATIENT MOVEMENT STORED IN: ^DGPM(
  1. ; .01 DATE/TIME (RDX), [0;1]
  1. ;
  1. ;.1 WARD LOCATION (FX), [.1;E1,30]
  1. ;.101 ROOM-BED (F), [.101;1]
  1. ;.103 TREATING SPECIALTY (P45.7'), [.103;1]
  1. ;.104 PROVIDER (*P200'), [.104;1]
  1. ;.1041 ATTENDING PHYSICIAN (*P200'), [.1041;1]
  1. ;.105 CURRENT ADMISSION (*P405'), [.105;1]
  1. ;.107 LODGER WARD LOCATION (F), [.107;1] ; LODGER ONLY
  1. ;.108 CURRENT ROOM (P405.4'), [.108;1] ; LODGER ONLY
  1. ; ^DG(405.4
  1. ; PREVIOUS DISCHARGE DATE ; NON CURRENT NON LODGER
  1. ;
  1. ;
  1. ;A DIFFERENT LOGIC HAS BEEN ADOPTED FOR THE ADT DATASET
  1. ;
  1. ;USING IN5^VADPT:
  1. ; first CALL IN5^VADPT for CURRENT INFO based on the requested
  1. ; date passed to RPC. If no date sent, defaults to current date.
  1. ; if no CURRENT CALL IN5^VADPT for LODGER INFO
  1. ; if no LODGER INFO CALL IN5^VADPT for LAST DISCHARGE DATE
  1. ;
  1. ;Rows of ADT movements associated with the admission are also returned.
  1. ;See BLD for list of data elements returned for each movement.
  1. ;
  1. GETPSARY(PSARRAY,REQDT) ;
  1. ;
  1. ; GET CURRENT MOVEMENT DATA FROM IN5^VADPT
  1. NEW INDATA,VAIP,VAINDT,DFN,VAROOT,VAHOW,ADTTYPE
  1. SET DFN=PTID
  1. CURRENT K INDATA,VAIP,VAINDT
  1. SET VAROOT="INDATA",VAHOW=2
  1. DO IN5^VADPT SET ADTTYPE="CURRENT"
  1. LODGER IF $P($G(INDATA(1)),"^",1)="" DO ; NO CURRENT DO LODGER
  1. .KILL INDATA,VAIP,VAINDT
  1. .SET VAROOT="INDATA",VAHOW=2,VAIP("L")=""
  1. .DO IN5^VADPT SET ADTTYPE="LODGER"
  1. LAST IF $P($G(INDATA(1)),"^",1)="" DO ; NO CURRENT AND NO LODGER DO PREVIOUS
  1. .K INDATA,VAIP,VAINDT
  1. .SET VAROOT="INDATA",VAHOW=2,VAIP("D")="LAST"
  1. .DO IN5^VADPT SET ADTTYPE="DISCHARGE"
  1. ;
  1. NEW CNT
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="<DataSet Name='ADT'"
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^RequestDate^"_DT
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^CurrentMovement^"_$$CURMOVE()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^WardLocation^"_$$WARDLOC()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^Service^"_$$SERVICE()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^RoomBed^"_$$ROOMBED()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^TreatingSpecialty^"_$$TRETSPC()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^Provider^"_$$PROVIDE()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^AttendingPhysician^"_$$ATTPHY()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^CurrentAdmission^"_$$CURADM()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^TransactionType^"_$$TRANSTYP()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^MovementType^"_$$MVTTYP()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^LastAdmissionDate^"_$$LASTADM()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^LodgerWardLocation^"_$$LODWLOC()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^LodgerRoom^"_$$LODROOM()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^DischargeDate^"_$$DISDATE()
  1. D ADTC(REQDT,.CNT)
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="></DataSet>"_"^^^1"
  1. QUIT
  1. ;
  1. ADTC(ADTDT,CNT) ;ADT Collection of all movements associated with a specifed date
  1. NEW ROWCNT
  1. K VAIP,VAROOT,INDATA,VAHOW
  1. SET ADTDT=$S($G(ADTDT)'="":ADTDT\1,1:DT)
  1. SET ROWCNT=0
  1. SET VAIP("D")=ADTDT
  1. SET VAIP("M")=0
  1. SET VAIP("L")=""
  1. DO IN5^VADPT
  1. IF VAIP(1)'="" DO
  1. . NEW DGRRMIEN,DGRRCA,DGRRMVDT
  1. . SET DGRRCA=VAIP(1)
  1. . K ^TMP($J,"DGRRMVTS")
  1. . SET DGRRMIEN=""
  1. . F SET DGRRMIEN=$O(^DGPM("CA",+DGRRCA,DGRRMIEN)) Q:DGRRMIEN="" D
  1. ..; Set up TMP global to assure movements are in date/time order
  1. ..S DGRRMVDT=+$P($G(^DGPM(+DGRRMIEN,0)),"^")
  1. ..I DGRRMVDT>0 S ^TMP($J,"DGRRMVTS",DGRRMVDT,DGRRMIEN)=""
  1. . ;Loop through TMP global
  1. .N DGRRMDT,DGRRIEN
  1. .S DGRRMDT=""
  1. .F S DGRRMDT=$O(^TMP($J,"DGRRMVTS",DGRRMDT)) Q:DGRRMDT="" D
  1. .. S DGRRIEN=""
  1. .. F S DGRRIEN=$O(^TMP($J,"DGRRMVTS",DGRRMDT,DGRRIEN)) Q:DGRRIEN="" D
  1. ... K INDATA,VAROOT,VAIP
  1. ... SET ROWCNT=$G(ROWCNT)+1
  1. ... SET VAIP("E")=DGRRIEN
  1. ... SET VAROOT="INDATA"
  1. ... DO IN5^VADPT
  1. ... S ADTTYPE=$S(+$G(INDATA(2))=4!(+$G(INDATA(2))=5):"LODGER",+$G(INDATA(2))=3:"DISCHARGE",1:"CURRENT")
  1. ... DO BLD
  1. .K ^TMP($J,"DGRRMVTS")
  1. IF ROWCNT=0 D
  1. .SET ROWCNT=ROWCNT+1
  1. .DO BLD
  1. Q
  1. ;
  1. BLD ;Build array of data elements for each movement. Similar to elements
  1. ;defined for current inpatient and lodger activity. The word 'current'
  1. ;removed from element names.
  1. ;
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="><ADTMovements Row='"_ROWCNT_"'"
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^RequestDate^"_ADTDT
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^MovementDate^"_$$CURMOVE()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^WardLocation^"_$$WARDLOC()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^Service^"_$$SERVICE()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^RoomBed^"_$$ROOMBED()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^TreatingSpecialty^"_$$TRETSPC()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^Provider^"_$$PROVIDE()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^AttendingPhysician^"_$$ATTPHY()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^AdmissionDate^"_$$CURADM()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^TransactionType^"_$$TRANSTYP()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^MovementType^"_$$MVTTYP()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^LodgerWardLocation^"_$$LODWLOC()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^LodgerRoom^"_$$LODROOM()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="^DischargeDate^"_$$DISDATE()
  1. SET CNT=$G(CNT)+1,PSARRAY(CNT)="></ADTMovements"
  1. Q
  1. CURMOVE() ;
  1. NEW DATA
  1. SET DATA=""
  1. IF ADTTYPE'="DISCHARGE" SET DATA=$P($G(INDATA(3)),"^",1)
  1. QUIT DATA
  1. ;
  1. WARDLOC() ;
  1. NEW DATA
  1. SET DATA=""
  1. IF ADTTYPE="CURRENT" SET DATA=$P($G(INDATA(5)),"^",2)
  1. QUIT DATA
  1. ;
  1. SERVICE() ;
  1. NEW DATA
  1. SET DATA=""
  1. IF ADTTYPE="CURRENT" SET DATA=$P($G(INDATA(5)),"^",1)
  1. IF ADTTYPE="CURRENT" SET DATA=$P($G(^DIC(42,+DATA,0)),"^",3)
  1. IF ADTTYPE="DISCHARGE" SET DATA=$P($G(INDATA(17,4)),"^",1)
  1. IF ADTTYPE="DISCHARGE" SET DATA=$P($G(^DIC(42,+DATA,0)),"^",3)
  1. QUIT DATA
  1. ;
  1. ROOMBED() ;
  1. NEW DATA
  1. SET DATA=""
  1. IF ADTTYPE="CURRENT" SET DATA=$P($G(INDATA(6)),"^",2)
  1. QUIT DATA
  1. ;
  1. TRETSPC() ;
  1. NEW DATA
  1. SET DATA=""
  1. IF ADTTYPE'="DISCHARGE" SET DATA=$P($G(INDATA(8)),"^",2)
  1. QUIT DATA
  1. ;
  1. PROVIDE() ;
  1. NEW DATA
  1. SET DATA=""
  1. IF ADTTYPE'="DISCHARGE" SET DATA=$P($G(INDATA(7)),"^",2)
  1. QUIT DATA
  1. ;
  1. ATTPHY() ;
  1. NEW DATA
  1. SET DATA=""
  1. IF ADTTYPE'="DISCHARGE" SET DATA=$P($G(INDATA(18)),"^",2)
  1. QUIT DATA
  1. ;
  1. CURADM() ;
  1. NEW DATA
  1. SET DATA=""
  1. IF ADTTYPE'="DISCHARGE" SET DATA=$P($G(INDATA(13,1)),"^",1)
  1. QUIT DATA
  1. ;
  1. TRANSTYP() ;
  1. NEW DATA
  1. SET DATA=""
  1. I ADTTYPE'="DISCHARGE" SET DATA=$P($G(INDATA(2)),"^",2)
  1. I ADTTYPE="DISCHARGE" SET DATA=$P($G(INDATA(17,2)),"^",2)
  1. QUIT DATA
  1. ;
  1. MVTTYP() ;
  1. NEW DATA
  1. SET DATA=""
  1. I ADTTYPE'="DISCHARGE" SET DATA=$P($G(INDATA(4)),"^",2)
  1. I ADTTYPE="DISCHARGE" SET DATA=$P($G(INDATA(17,3)),"^",2)
  1. QUIT DATA
  1. ;
  1. LASTADM() ;
  1. NEW DATA
  1. SET DATA=""
  1. IF ADTTYPE="DISCHARGE" SET DATA=$P($G(INDATA(13,1)),"^",1)
  1. QUIT DATA
  1. ;
  1. LODWLOC() ;
  1. NEW DATA
  1. SET DATA=""
  1. IF ADTTYPE="LODGER" SET DATA=$P($G(INDATA(5)),"^",2)
  1. QUIT DATA
  1. ;
  1. LODROOM() ;
  1. NEW DATA
  1. SET DATA=""
  1. IF ADTTYPE="LODGER" SET DATA=$P($G(INDATA(6)),"^",2)
  1. QUIT DATA
  1. ;
  1. DISDATE() ;
  1. NEW DATA
  1. SET DATA=""
  1. IF ADTTYPE="DISCHARGE" SET DATA=$P($G(INDATA(17,1)),"^",1)
  1. QUIT DATA