- DGPFRPI1 ;ALB/RBS - PRF PRINCIPAL INVEST REPORT CONT. ; 6/8/04 5:07pm
- ;;5.3;Registration;**554,1015**;Aug 13, 1993;Build 21
- ;
- ;This routine will be used to display/print all patient assignments
- ;for a Principal Investigator assigned to the Research record flag.
- ;
- ; Input: DGSORT() - Array containing user report parameters.
- ;
- ; Output: A formatted report of the Principal Investigator person's
- ; associated patient record flag assignments.
- ;
- ;- no direct entry
- QUIT
- ;
- START ; compile and print report
- ;
- I $E(IOST)="C" D WAIT^DICD
- N DGLIST ;temp global name used for report list
- S DGLIST=$NA(^TMP("DGPFRPI1",$J))
- K @DGLIST
- D LOOP(.DGSORT,DGLIST)
- D PRINT^DGPFRPI2(.DGSORT,DGLIST)
- K @DGLIST
- D EXIT
- Q
- ;
- LOOP(DGSORT,DGLIST) ;use sort var's for record searching to build list
- ; Input:
- ; DGSORT - array of user selected report parameters
- ; DGLIST - temp global name
- ;
- ; Output:
- ; ^TMP("DGPFRPI1",$J) - temp global containing report output
- ;
- N DGAIEN ;patient assignment ien
- N DGBEG ;sort beginning date
- N DGCNT ;flag counter
- N DGDFNLST ;array of patient dfn's assigned to the flag
- N DGEND ;sort ending date
- N DGFIEN ;flag ien
- N DGFLAG ;local array used to hold flag record
- N DGPI ;principal investigator person ien
- N DGPIIEN ;sort selection var
- N DGPINAME ;name of principal investigator
- N DGPINUM ;subscript number for principal investigator
- N DGPRINC ;principal investigator sort
- N DGSTAT ;status of assignment
- N DGSTATUS ;sort status
- N DGSUB ;loop flag name var
- N DGVPTR ;variable pointer of flag record (i.e.) "25;DGPF(26.11,"
- N DGX ;loop var
- ;
- ; setup variables equal to user input parameter subscripts
- ; Only Category II (Local) ^DGPF(26.11) file for Research Flags
- ; "DGPRINC", "DGSTATUS", "DGBEG", "DGEND"
- S DGX="" F S DGX=$O(DGSORT(DGX)) Q:DGX="" S @DGX=DGSORT(DGX)
- ;
- S DGPIIEN=+DGPRINC ; if 0, then 'A'll PI sort was selected
- S DGSTAT=+DGSTATUS
- S:DGSTAT=2 DGSTAT=0 ; inactive assignment status value is '0'
- ;
- ; loop research type (2) record flag x-ref
- S DGSUB="",DGCNT=0
- F S DGSUB=$O(^DGPF(26.11,"ATYP",2,DGSUB)) Q:DGSUB="" D
- . S DGFIEN=""
- . F S DGFIEN=$O(^DGPF(26.11,"ATYP",2,DGSUB,DGFIEN)) Q:DGFIEN="" D
- . . K DGFLAG
- . . Q:'$$GETLF^DGPFALF(DGFIEN,.DGFLAG) ;local flag record data
- . . Q:DGPIIEN&'$D(^DGPF(26.11,DGFIEN,2,"B",DGPIIEN))
- . . S (DGPINUM,DGPI)=""
- . . F S DGPINUM=$O(DGFLAG("PRININV",DGPINUM)) Q:DGPINUM="" D
- . . . S DGPI=$P($G(DGFLAG("PRININV",DGPINUM,0)),U)
- . . . S DGPINAME=$P($G(DGFLAG("PRININV",DGPINUM,0)),U,2)
- . . . S:DGPINAME']"" DGPINAME="Missing Name"
- . . . S DGVPTR=DGFIEN_";DGPF(26.11," ; flag variable pointer setup
- . . . K DGDFNLST
- . . . S DGCNT=$$ASGNCNT^DGPFLF6(DGVPTR,.DGDFNLST) ;patient dfn list
- . . . Q:'DGCNT
- . . . D BLDTMP(DGBEG,DGEND,DGSTAT,DGPI,DGPINAME,.DGDFNLST,DGLIST)
- Q
- ;
- BLDTMP(DGBEG,DGEND,DGSTAT,DGPI,DGPINAME,DGDFNLST,DGLIST) ; list global builder
- ; Input:
- ; DGBEG - sort beginning date
- ; DGEND - sort ending date
- ; DGSTAT - status of assignment
- ; DGPI - principal investigator person ien
- ; DGPINAME - name of principal investigator
- ; DGDFNLST - array of patient dfn's assigned to the flag
- ; DGLIST - temp global name used for report list
- ;
- ; Output:
- ; ^TMP("DGPFRPI1",$J) - temp global containing report output
- ;
- N DGACTDT ;initial entry date
- N DGAIEN ;patient assignment ien
- N DGDFN ;pointer to patient being reported on
- N DGFGNM ;flag name
- N DGHIEN ;history assignment ien
- N DGINIT ;initial assignment date
- N DGPFA ;assignment data array
- N DGPFAH ;assignment history data array
- N DGLINE ;report detail line
- N DGPAT ;array of patient demographics
- N DGPNM ;patient name
- N DGREV ;review date
- ;
- S DGDFN=""
- F S DGDFN=$O(DGDFNLST(DGDFN)) Q:DGDFN="" D
- . S DGAIEN=$G(DGDFNLST(DGDFN))
- . Q:DGAIEN=""
- . K DGPFA
- . Q:'$$GETASGN^DGPFAA(DGAIEN,.DGPFA) ;get assignment data
- . Q:DGDFN'=$P(DGPFA("DFN"),U)
- . I DGSTAT'=3,+DGPFA("STATUS")'=DGSTAT Q ;not correct status
- . ; get last history record (most current)
- . K DGPFAH
- . S DGHIEN=$$GETLAST^DGPFAAH(DGAIEN)
- . Q:'DGHIEN
- . Q:'$$GETHIST^DGPFAAH(DGHIEN,.DGPFAH)
- . S DGINIT=+$$GETADT^DGPFAAH(DGAIEN) ;initial assignment date
- . Q:'DGINIT
- . ; check if assignment falls within the Begin and End dates
- . I DGINIT>DGBEG&($P(DGINIT,".")'>DGEND) D
- . . ; get patient demographics
- . . K DGPAT
- . . Q:'$$GETPAT^DGPFUT2(DGDFN,.DGPAT)
- . . S DGPNM=DGPAT("NAME")
- . . S:DGPNM']"" DGPNM="Missing Patient Name"
- . . S DGFGNM=$P(DGPFA("FLAG"),U,2)
- . . S:DGFGNM']"" DGFGNM="Missing Flag Name"
- . . S DGACTDT=$$FDATE^VALM1(+DGPFAH("ASSIGNDT"))
- . . S DGAIEN=+DGPFAH("ASSIGN")
- . . I +DGPFA("REVIEWDT") S DGREV=$$FDATE^VALM1(+DGPFA("REVIEWDT"))
- . . E S DGREV="N/A"
- . . S DGLINE=DGPAT("SSN")_U_$P(DGPFAH("ACTION"),U,2)_U_DGACTDT_U_DGREV_U_$P(DGPFA("STATUS"),U,2)
- . . ; - Flag Name, 0 node, IEN of Principal Investigator = PI Name
- . . S @DGLIST@(DGFGNM,0,DGPI)=DGPINAME
- . . ; - Flag Name, Pat Name, DFN, Asignment IEN
- . . S @DGLIST@(DGFGNM,DGPNM,DGDFN,DGAIEN)=DGLINE
- Q
- ;
- EXIT ;
- I $D(ZTQUEUED) S ZTREQ="@"
- I '$D(ZTQUEUED) D
- . K %ZIS,POP
- . D ^%ZISC,HOME^%ZIS
- Q
- DGPFRPI1 ;ALB/RBS - PRF PRINCIPAL INVEST REPORT CONT. ; 6/8/04 5:07pm
- +1 ;;5.3;Registration;**554,1015**;Aug 13, 1993;Build 21
- +2 ;
- +3 ;This routine will be used to display/print all patient assignments
- +4 ;for a Principal Investigator assigned to the Research record flag.
- +5 ;
- +6 ; Input: DGSORT() - Array containing user report parameters.
- +7 ;
- +8 ; Output: A formatted report of the Principal Investigator person's
- +9 ; associated patient record flag assignments.
- +10 ;
- +11 ;- no direct entry
- +12 QUIT
- +13 ;
- START ; compile and print report
- +1 ;
- +2 IF $EXTRACT(IOST)="C"
- DO WAIT^DICD
- +3 ;temp global name used for report list
- NEW DGLIST
- +4 SET DGLIST=$NAME(^TMP("DGPFRPI1",$JOB))
- +5 KILL @DGLIST
- +6 DO LOOP(.DGSORT,DGLIST)
- +7 DO PRINT^DGPFRPI2(.DGSORT,DGLIST)
- +8 KILL @DGLIST
- +9 DO EXIT
- +10 QUIT
- +11 ;
- LOOP(DGSORT,DGLIST) ;use sort var's for record searching to build list
- +1 ; Input:
- +2 ; DGSORT - array of user selected report parameters
- +3 ; DGLIST - temp global name
- +4 ;
- +5 ; Output:
- +6 ; ^TMP("DGPFRPI1",$J) - temp global containing report output
- +7 ;
- +8 ;patient assignment ien
- NEW DGAIEN
- +9 ;sort beginning date
- NEW DGBEG
- +10 ;flag counter
- NEW DGCNT
- +11 ;array of patient dfn's assigned to the flag
- NEW DGDFNLST
- +12 ;sort ending date
- NEW DGEND
- +13 ;flag ien
- NEW DGFIEN
- +14 ;local array used to hold flag record
- NEW DGFLAG
- +15 ;principal investigator person ien
- NEW DGPI
- +16 ;sort selection var
- NEW DGPIIEN
- +17 ;name of principal investigator
- NEW DGPINAME
- +18 ;subscript number for principal investigator
- NEW DGPINUM
- +19 ;principal investigator sort
- NEW DGPRINC
- +20 ;status of assignment
- NEW DGSTAT
- +21 ;sort status
- NEW DGSTATUS
- +22 ;loop flag name var
- NEW DGSUB
- +23 ;variable pointer of flag record (i.e.) "25;DGPF(26.11,"
- NEW DGVPTR
- +24 ;loop var
- NEW DGX
- +25 ;
- +26 ; setup variables equal to user input parameter subscripts
- +27 ; Only Category II (Local) ^DGPF(26.11) file for Research Flags
- +28 ; "DGPRINC", "DGSTATUS", "DGBEG", "DGEND"
- +29 SET DGX=""
- FOR
- SET DGX=$ORDER(DGSORT(DGX))
- IF DGX=""
- QUIT
- SET @DGX=DGSORT(DGX)
- +30 ;
- +31 ; if 0, then 'A'll PI sort was selected
- SET DGPIIEN=+DGPRINC
- +32 SET DGSTAT=+DGSTATUS
- +33 ; inactive assignment status value is '0'
- IF DGSTAT=2
- SET DGSTAT=0
- +34 ;
- +35 ; loop research type (2) record flag x-ref
- +36 SET DGSUB=""
- SET DGCNT=0
- +37 FOR
- SET DGSUB=$ORDER(^DGPF(26.11,"ATYP",2,DGSUB))
- IF DGSUB=""
- QUIT
- Begin DoDot:1
- +38 SET DGFIEN=""
- +39 FOR
- SET DGFIEN=$ORDER(^DGPF(26.11,"ATYP",2,DGSUB,DGFIEN))
- IF DGFIEN=""
- QUIT
- Begin DoDot:2
- +40 KILL DGFLAG
- +41 ;local flag record data
- IF '$$GETLF^DGPFALF(DGFIEN,.DGFLAG)
- QUIT
- +42 IF DGPIIEN&'$DATA(^DGPF(26.11,DGFIEN,2,"B",DGPIIEN))
- QUIT
- +43 SET (DGPINUM,DGPI)=""
- +44 FOR
- SET DGPINUM=$ORDER(DGFLAG("PRININV",DGPINUM))
- IF DGPINUM=""
- QUIT
- Begin DoDot:3
- +45 SET DGPI=$PIECE($GET(DGFLAG("PRININV",DGPINUM,0)),U)
- +46 SET DGPINAME=$PIECE($GET(DGFLAG("PRININV",DGPINUM,0)),U,2)
- +47 IF DGPINAME']""
- SET DGPINAME="Missing Name"
- +48 ; flag variable pointer setup
- SET DGVPTR=DGFIEN_";DGPF(26.11,"
- +49 KILL DGDFNLST
- +50 ;patient dfn list
- SET DGCNT=$$ASGNCNT^DGPFLF6(DGVPTR,.DGDFNLST)
- +51 IF 'DGCNT
- QUIT
- +52 DO BLDTMP(DGBEG,DGEND,DGSTAT,DGPI,DGPINAME,.DGDFNLST,DGLIST)
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +53 QUIT
- +54 ;
- BLDTMP(DGBEG,DGEND,DGSTAT,DGPI,DGPINAME,DGDFNLST,DGLIST) ; list global builder
- +1 ; Input:
- +2 ; DGBEG - sort beginning date
- +3 ; DGEND - sort ending date
- +4 ; DGSTAT - status of assignment
- +5 ; DGPI - principal investigator person ien
- +6 ; DGPINAME - name of principal investigator
- +7 ; DGDFNLST - array of patient dfn's assigned to the flag
- +8 ; DGLIST - temp global name used for report list
- +9 ;
- +10 ; Output:
- +11 ; ^TMP("DGPFRPI1",$J) - temp global containing report output
- +12 ;
- +13 ;initial entry date
- NEW DGACTDT
- +14 ;patient assignment ien
- NEW DGAIEN
- +15 ;pointer to patient being reported on
- NEW DGDFN
- +16 ;flag name
- NEW DGFGNM
- +17 ;history assignment ien
- NEW DGHIEN
- +18 ;initial assignment date
- NEW DGINIT
- +19 ;assignment data array
- NEW DGPFA
- +20 ;assignment history data array
- NEW DGPFAH
- +21 ;report detail line
- NEW DGLINE
- +22 ;array of patient demographics
- NEW DGPAT
- +23 ;patient name
- NEW DGPNM
- +24 ;review date
- NEW DGREV
- +25 ;
- +26 SET DGDFN=""
- +27 FOR
- SET DGDFN=$ORDER(DGDFNLST(DGDFN))
- IF DGDFN=""
- QUIT
- Begin DoDot:1
- +28 SET DGAIEN=$GET(DGDFNLST(DGDFN))
- +29 IF DGAIEN=""
- QUIT
- +30 KILL DGPFA
- +31 ;get assignment data
- IF '$$GETASGN^DGPFAA(DGAIEN,.DGPFA)
- QUIT
- +32 IF DGDFN'=$PIECE(DGPFA("DFN"),U)
- QUIT
- +33 ;not correct status
- IF DGSTAT'=3
- IF +DGPFA("STATUS")'=DGSTAT
- QUIT
- +34 ; get last history record (most current)
- +35 KILL DGPFAH
- +36 SET DGHIEN=$$GETLAST^DGPFAAH(DGAIEN)
- +37 IF 'DGHIEN
- QUIT
- +38 IF '$$GETHIST^DGPFAAH(DGHIEN,.DGPFAH)
- QUIT
- +39 ;initial assignment date
- SET DGINIT=+$$GETADT^DGPFAAH(DGAIEN)
- +40 IF 'DGINIT
- QUIT
- +41 ; check if assignment falls within the Begin and End dates
- +42 IF DGINIT>DGBEG&($PIECE(DGINIT,".")'>DGEND)
- Begin DoDot:2
- +43 ; get patient demographics
- +44 KILL DGPAT
- +45 IF '$$GETPAT^DGPFUT2(DGDFN,.DGPAT)
- QUIT
- +46 SET DGPNM=DGPAT("NAME")
- +47 IF DGPNM']""
- SET DGPNM="Missing Patient Name"
- +48 SET DGFGNM=$PIECE(DGPFA("FLAG"),U,2)
- +49 IF DGFGNM']""
- SET DGFGNM="Missing Flag Name"
- +50 SET DGACTDT=$$FDATE^VALM1(+DGPFAH("ASSIGNDT"))
- +51 SET DGAIEN=+DGPFAH("ASSIGN")
- +52 IF +DGPFA("REVIEWDT")
- SET DGREV=$$FDATE^VALM1(+DGPFA("REVIEWDT"))
- +53 IF '$TEST
- SET DGREV="N/A"
- +54 SET DGLINE=DGPAT("SSN")_U_$PIECE(DGPFAH("ACTION"),U,2)_U_DGACTDT_U_DGREV_U_$PIECE(DGPFA("STATUS"),U,2)
- +55 ; - Flag Name, 0 node, IEN of Principal Investigator = PI Name
- +56 SET @DGLIST@(DGFGNM,0,DGPI)=DGPINAME
- +57 ; - Flag Name, Pat Name, DFN, Asignment IEN
- +58 SET @DGLIST@(DGFGNM,DGPNM,DGDFN,DGAIEN)=DGLINE
- End DoDot:2
- End DoDot:1
- +59 QUIT
- +60 ;
- EXIT ;
- +1 IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- +2 IF '$DATA(ZTQUEUED)
- Begin DoDot:1
- +3 KILL %ZIS,POP
- +4 DO ^%ZISC
- DO HOME^%ZIS
- End DoDot:1
- +5 QUIT