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

DGPFRAL1.m

Go to the documentation of this file.
  1. DGPFRAL1 ;ALB/RBS - PRF ACTION NOT LINKED REPORT CONT. ; 10/12/05 2:48pm
  1. ;;5.3;Registration;**554,650,892,960**;Aug 13, 1993;Build 22
  1. ; Last Edited: SHRPE/SGM - July 9, 2018 15:55
  1. ;
  1. ; ICR# TYPE DESCRIPTION
  1. ;----- ---- ---------------------
  1. ;2171 Sup $$STA^XUAF4
  1. ;10024 Sup WAIT^DICD
  1. ;10063 Sup $$S^%ZTLOAD
  1. ;10086 Sup HOME^%ZIS
  1. ;10089 Sup ^%ZISC
  1. ;10103 Sup ^XLFDT: $$FMTE, $$NOW
  1. ;10112 Sup $$SITE^VASITE
  1. ;
  1. ;This routine will be used to display or print all of the patient
  1. ;assignment history records that are not linked to a progress note.
  1. ;
  1. ; INPUT: DGSORT() - see comments at the top of routine DGPFRAL for
  1. ; explanation of DGSORT array
  1. ;
  1. ; Output: A formatted report of patient Assignment History Actions
  1. ; that are not linked to a TIU Progress Note.
  1. ;
  1. ;- no direct entry
  1. QUIT
  1. ;
  1. START ; compile and print report
  1. N DGLIST,DGQ,HD,TRM
  1. D INIT
  1. D LOOP I 'DGQ D PRINT(.DGSORT,DGLIST)
  1. ;
  1. EXIT ;
  1. K @DGLIST
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. I 'DGQ,TRM S X=$$E^DGPFUT7 W @IOF
  1. I 'TRM,$Y>0 W @IOF
  1. Q
  1. ;
  1. LOOP ;use sort var's for record searching to build list
  1. ; Input:
  1. ; DGSORT - array of user selected report parameters
  1. ; DGLIST - temp global name
  1. ;
  1. ; Output:
  1. ; ^TMP("DGPFRAL1",$J) - temp global containing report output
  1. ;
  1. N DGBEG ;beginning date
  1. N DGC ;var used to check which category is being reported on
  1. N DGCAT ;flag category
  1. N DGCATG ;category 1 or 2
  1. N DGCNT ;flag counter
  1. N DGDFN ;pointer to patient being reported on
  1. N DGDFNLST ;array of dfn's assigned to the flag
  1. N DGEND ;ending date
  1. N DGHIENS ;array subscripted by assignment history date
  1. N DGIEN ;assignment ien
  1. N DGPAT ;patient data array
  1. N DGPFA ;assignment data array
  1. N DGSUB ;loop flag
  1. N DGX ;loop var
  1. ;
  1. ; setup variables equal to user input parameter subscripts
  1. ; "DGCAT", "DGBEG", "DGEND"
  1. S DGX="" F S DGX=$O(DGSORT(DGX)) Q:DGX="" S @DGX=DGSORT(DGX)
  1. S DGC=$S(+DGCAT=3:0,1:+DGCAT)
  1. S:DGC DGC=$S(DGC=1:26.15,1:26.11)
  1. N DGI S DGI=0
  1. ;
  1. ; loop assignment variable pointer flag x-ref file to run report
  1. S (DGDFN,DGIEN)="",(DGSUB,DGCNT)=0
  1. F S DGSUB=$O(^DGPF(26.13,"AFLAG",DGSUB)) Q:DGSUB="" D Q:DGQ
  1. . I DGC,DGSUB'[DGC Q ;not correct file based on category
  1. . S DGCATG=$S(DGSUB[26.15:1,1:2)
  1. . K DGDFNLST
  1. . S DGCNT=$$ASGNCNT^DGPFLF6(DGSUB,.DGDFNLST)
  1. . Q:'DGCNT
  1. . S DGDFN=""
  1. . F S DGDFN=$O(DGDFNLST(DGDFN)) Q:DGDFN="" D Q:DGQ
  1. . . S DGI=1+DGI I '(DGI#200) D CHK Q:DGQ
  1. . . S DGIEN=$G(DGDFNLST(DGDFN)) Q:DGIEN=""
  1. . . ; get assignment record
  1. . . K DGPFA
  1. . . Q:'$$GETASGN^DGPFAA(DGIEN,.DGPFA)
  1. . . ; check if calling site is owner site
  1. . . Q:'$$ISDIV^DGPFUT($P(DGPFA("OWNER"),U))
  1. . . ;
  1. . . ;filter patient when last action is ENTERED IN ERROR
  1. . . Q:$$ENTINERR(DGIEN)
  1. . . ;
  1. . . ;filter for single flag - DG*5.3*960
  1. . . Q:'$$FLAGNM($P(DGPFA("FLAG"),U))
  1. . . ;
  1. . . ;filter on assignment status - DG*5.3*960
  1. . . Q:'$$STATUS(+DGPFA("STATUS"))
  1. . . ;
  1. . . ;action ien array subscripted by assignment history date
  1. . . K DGHIENS
  1. . . Q:'$$GETALLDT^DGPFAAH(DGIEN,.DGHIENS)
  1. . . ; check if any Action's fall within the Begin and End dates
  1. . . I $P($O(DGHIENS("")),".")'>DGEND&($P($O(DGHIENS(""),-1),".")'<DGBEG) D
  1. . . . ;delete any action that is not within Begin and End dates
  1. . . . S DGX=0 F S DGX=$O(DGHIENS(DGX)) Q:DGX="" D
  1. . . . . I $P(DGX,".")<DGBEG!($P(DGX,".")>DGEND) K DGHIENS(DGX)
  1. . . . Q:'$O(DGHIENS(""))
  1. . . . ;
  1. . . . ; get patient demographics
  1. . . . K DGPAT
  1. . . . Q:'$$GETPAT^DGPFUT2(DGDFN,.DGPAT)
  1. . . . ;
  1. . . . ; call to build temp global
  1. . . . D BLDTMP(.DGPFA,.DGPAT,.DGHIENS,DGCATG,DGLIST)
  1. ;
  1. Q
  1. ;
  1. BLDTMP(DGPFA,DGPAT,DGHIENS,DGCATG,DGLIST) ; list global builder
  1. ; Input:
  1. ; DGPFA - array of assignment record data
  1. ; DGPAT - array of patient demographics
  1. ; DGHIENS - array of history action IEN's sorted by d/t
  1. ; DGCATG - category of flag 1=National, 2=Local
  1. ; DGLIST - temp global name used for report list
  1. ;
  1. ; Output:
  1. ; ^TMP("DGPFRFA1",$J) - temp global containing report output
  1. ;
  1. N DGACTDT ;initial entry date
  1. N DGFGNM ;flag name
  1. N DGHIEN ;assignment ien
  1. N DGLINE ;report detail line
  1. N DGLNCNT ;unique subscript counter
  1. N DGPDFN ;pointer to patient
  1. N DGPFAH ;assignment history record data
  1. N DGPNM ;patient name
  1. N DGFLAG ;change of assignment flag
  1. ;
  1. ; Check to see if this was a change of assignment
  1. S DGFLAG=0
  1. N DGI S DGI=0
  1. D FLGXFER
  1. ;
  1. ; loop all assignment history ien's
  1. S DGHIEN="",DGLNCNT=0
  1. F S DGHIEN=$O(DGHIENS(DGHIEN)) Q:DGHIEN="" D Q:DGQ
  1. . S DGI=DGI+1 I '(DGI#200) D CHK Q:DGQ
  1. . ; get assignment history record
  1. . K DGPFAH
  1. . Q:'$$GETHIST^DGPFAAH(DGHIENS(DGHIEN),.DGPFAH)
  1. . Q:+$G(DGPFAH("TIULINK")) ; progress note pointer
  1. . Q:+$G(DGPFAH("ACTION"))=5 ; no ENTERED IN ERROR action
  1. . S DGACTDT=$$FMTE^XLFDT(+DGPFAH("ASSIGNDT")\1,"2Z")
  1. . I DGFLAG I +DGPFAH("ASSIGNDT")'>DGFLAG Q ; if < assignment chg
  1. . Q:'$$LOCAL() ; check local/not local DG*5.3*960
  1. . S DGPNM=DGPAT("NAME")
  1. . S:DGPNM']"" DGPNM="MISSING PATIENT NAME"
  1. . S DGPDFN=$P(DGPFA("DFN"),U)
  1. . S DGFGNM=$P(DGPFA("FLAG"),U,2)
  1. . S:DGFGNM']"" DGFGNM="MISSING FLAG NAME"
  1. . S DGLINE=$E(DGPNM)_$E(DGPAT("SSN"),6,10)_U_$E(DGFGNM,1,17)
  1. . S DGLINE=DGLINE_U_$P(DGPFAH("ACTION"),U,2)_U_DGACTDT
  1. . S DGLNCNT=DGLNCNT+1
  1. . S @DGLIST@(DGCATG,DGFGNM,DGPNM,DGPDFN,DGLNCNT)=DGLINE
  1. ;
  1. Q
  1. ;
  1. PRINT(DGSORT,DGLIST) ;output report
  1. ; Input:
  1. ; DGSORT - array of user selected report parameters
  1. ; DGLIST - temp global name used for report list
  1. ;
  1. ; Output: Formatted report to user selected device
  1. ;
  1. N CAT ; flag category
  1. N OCAT ; previous flag category
  1. N DFN ; ien of patient
  1. N ODFN ; previous DFN
  1. N FLAG ; flag name
  1. N NAM ; patient name
  1. N OFLAG ; previoous flag name
  1. N PAGE ; page counter
  1. N REF ; $query incrementing variable
  1. N STR ; string of detail line to display
  1. N I,X,Y,STOP,TOTAL
  1. ;
  1. S (OCAT,ODFN,OFLAG)=""
  1. S REF=DGLIST
  1. S STOP=$TR(REF,")",",")
  1. S (TOTAL,TOTAL(1),TOTAL(2))=0
  1. S PAGE=0
  1. ;
  1. I $O(@DGLIST@(""))="" D Q
  1. . D HEAD
  1. . W !!," >>> No Record Flag Assignments were found using the report criteria.",!
  1. . Q
  1. ;
  1. F I=1:1 S REF=$Q(@REF) Q:REF="" Q:REF'[STOP D Q:DGQ
  1. . N NL S NL=1 ; flag to indicate a new line is needed
  1. . S STR=@REF
  1. . S CAT=$QS(REF,3),FLAG=$QS(REF,4),NAM=$QS(REF,5),DFN=$QS(REF,6)
  1. . ; for each flag/pat combination, write flag and pat only once
  1. . ; however, repeat name/flag at beginning of new page
  1. . ; do header for each category change
  1. . I CAT'=OCAT,+OCAT D SUBTOT Q:DGQ
  1. . I CAT'=OCAT D HEAD S OCAT=CAT
  1. . I $Y>(IOSL-4) D PAUSE Q:DGQ D HEAD S ODFN=""
  1. . I DFN'=ODFN D
  1. . . W !,$E(NAM,1,18),?20,$P(STR,U),?32,$E($P(STR,U,2),1,17)
  1. . . S ODFN=DFN,OFLAG=FLAG,NL=0
  1. . . Q
  1. . ; - write new flag name
  1. . I OFLAG'=FLAG S OFLAG=FLAG W !?32,$E($P(STR,U,2),1,17),NL=0
  1. . ; - write action detail
  1. . W:NL ! W ?51,$E($P(STR,U,3),1,16),?69,$P(STR,U,4)
  1. . S TOTAL(CAT)=TOTAL(CAT)+1
  1. . Q
  1. ;
  1. ; Last category subtotals did not print
  1. S OCAT=CAT D SUBTOT
  1. ;
  1. D CHK
  1. ; Print totals if both cat I & II selected
  1. I 'DGQ,+DGSORT("DGCAT")=3 D
  1. . I 'TRM,(IOSL-$Y)<10 D HEAD
  1. . W !!,"REPORT SUMMARY:",!,"---------------"
  1. . W !,"Total Actions not Linked for Category I:",?48,$J(TOTAL(1),7)
  1. . W !,"Total Actions not Linked for Category II:",?48,$J(TOTAL(2),7)
  1. . W !?48,"-------"
  1. . S X=TOTAL(1)+TOTAL(2)
  1. . W !,"Total Actions not Linked for Category I & II:",?48,$J(X,7)
  1. . Q
  1. W !!,"<End of Report>"
  1. Q
  1. ;
  1. ;----------------------- PRIVATE SUBROUTINES -----------------------
  1. ;
  1. CHK ;
  1. ; Check is Taskman request to stop
  1. I 'DGQ,$D(ZTQUEUED),$$S^%ZTLOAD S (ZTSTOP,DGQ)=1
  1. I DGQ,$D(ZTQUEUED) W !!,"REPORT STOPPED AT USER REQUEST",!
  1. Q
  1. ;
  1. ENTINERR(DGIEN) ;
  1. ; Is last action ENTERED IN ERROR
  1. ; Input:
  1. ; DGIEN - (required) Pointer to PRF ASSIGNMENT (#26.13) file
  1. ;
  1. ; Output:
  1. ; Function Value - Return 1 on success, 0 on failure
  1. ;
  1. N DGPFAH
  1. I $$GETHIST^DGPFAAH($$GETLAST^DGPFAAH(DGIEN),.DGPFAH)
  1. Q +$G(DGPFAH("ACTION"))=5
  1. ;
  1. FLAGNM(FLG) ;
  1. ; Is flag = selected flag; DG*5.3*960
  1. ; "DGFLG": variable_pointer for flag, else ""
  1. N SORT S SORT=$P($G(DGSORT("DGFLG")),U,3)
  1. Q $S('SORT:1,1:SORT=FLG)
  1. ;
  1. FLGXFER ;
  1. ; If flag transferred and prior to assignment change date
  1. ; then do not rpt missing TIU link
  1. N X,DGHIEN,DGHACT
  1. Q:$P($G(DGPFA("ORIGSITE")),U)=$P($G(DGPFA("OWNER")),U)
  1. S X="Change of flag assignment ownership."
  1. S DGHIEN=""
  1. F S DGHIEN=$O(DGHIENS(DGHIEN)) Q:DGHIEN="" D
  1. . S DGHACT=DGHIENS(DGHIEN)
  1. . I $G(^DGPF(26.14,DGHACT,1,1,0))[X S DGFLAG=$P(DGHIEN,U)
  1. Q
  1. ;
  1. ; Print/Display page header
  1. N X D CHK Q:DGQ
  1. I TRM!('TRM&PAGE) W @IOF
  1. S PAGE=PAGE+1
  1. S X=$S('$D(CAT):"",+CAT=1:"I (National)",1:"II (Local)")
  1. F I=1:1:3 W !,HD(I) W:I=2 $J(PAGE,5)
  1. I PAGE<2 F I=1:1:4 W !,HD(1,I)
  1. I $D(CAT),CAT'=OCAT F I=1:1:4 W !,HD(2,I) W:I=1 X
  1. Q
  1. ;
  1. INIT ; initial certain local variables
  1. N X,BEG,END,FLG,PRT,SP
  1. S $P(SP," ",80)=""
  1. S TRM=($E(IOST)="C") I TRM D WAIT^DICD
  1. S DGLIST=$NA(^TMP("DGPFRAL1",$J)) ;temp global for report
  1. K @DGLIST
  1. S DGQ=0
  1. ;
  1. ; header display for all pages
  1. S HD(1)=$E(SP,1,24)_"Patient Record Flags"
  1. S X="Assignment Action Not Linked To A Progress Note Report"
  1. S $E(X,68)="Page: "
  1. S HD(2)=X
  1. S $P(HD(3),"-",80)=""
  1. ;
  1. S BEG=$$FMTE^XLFDT(DGSORT("DGBEG"),"5Z")
  1. S END=$$FMTE^XLFDT(DGSORT("DGEND"),"5Z")
  1. S PRT=$$FMTE^XLFDT($$NOW^XLFDT,"MP")
  1. S FLG=$P(DGSORT("DGFLG"),U,2) S:FLG="" FLG="All flags"
  1. ;
  1. ; display in header for first page only
  1. S HD(1,1)="REPORT TYPE: "_$P(DGSORT("DGCAT"),U,2)
  1. S $E(HD(1,1),47)="STATUS: "_$P(DGSORT("DGSTA"),U,2)
  1. S HD(1,2)=" FLAG: "_FLG
  1. S $E(HD(1,2),44)="ACTION BY: "_$P(DGSORT("DGFAC"),U,2)
  1. S HD(1,3)=" DATE RANGE: "_BEG_" To "_END
  1. S $E(HD(1,3),46)="PRINTED: "_PRT
  1. S HD(1,4)=HD(3)
  1. ;
  1. ; sub-header display / column header display
  1. S HD(2,1)=" CATEGORY: "
  1. S HD(2,2)=""
  1. S HD(2,3)="PATIENT SSN FLAG NAME ACTION ACTION DATE"
  1. S HD(2,4)="------------------ ---------- ----------------- ---------------- -----------"
  1. Q
  1. ;
  1. LOCAL() ;
  1. ; Filter is history created locally or not; DG*5.3*960
  1. ; expects .DGPFAH; "DGFAC": 1:local;2:other;3:both
  1. N X,LOC,SORT,TMP
  1. S SORT=+$G(DGSORT("DGFAC")) I SORT=3 Q 1
  1. F X="APPRVBY","ENTERBY","ORIGFAC" S TMP(X)=$G(DGPFAH(X))
  1. S LOC=$$LOC^DGPFUT63(.TMP)
  1. ; filter for locally created history records only
  1. I SORT=1 Q LOC=1
  1. ; filter for history records not created locally
  1. I SORT=2 Q LOC=0
  1. Q 0
  1. ;
  1. PAUSE ; pause screen display
  1. ; if DGQ=1 exit printing
  1. I TRM,PAGE,$$E^DGPFUT7<1 S DGQ=1
  1. Q
  1. ;
  1. STATUS(STAT) ;filter on active/inactive; DG*5.3*960
  1. ; "DGSTA": 1:inactive;2:active;3:both
  1. ; STAT : 0:inactive;1:active
  1. N SORT S SORT=$G(DGSORT("DGSTA"))-1 S:SORT<0 SORT=2
  1. Q $S(SORT>1:1,SORT=1:STAT=1,1:STAT=0)
  1. ;
  1. SUBTOT ;
  1. ; Print subtotals for category at end of that category listing
  1. ; Expects CAT and OCAT
  1. W !!,"Total Actions not Linked for Category "
  1. W $S(OCAT=1:"I",1:"II")_": "_(+TOTAL(OCAT))
  1. D:+DGSORT("DGCAT")=3 PAUSE
  1. S ODFN=""
  1. Q