[623] | 1 | PXRMETT ; SLC/PKR/PJH - Reminder Patient List Patients ;08/08/2006
|
---|
| 2 | ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
|
---|
| 3 | ;
|
---|
| 4 | ;Main entry point for PXRM PATIENT LIST
|
---|
| 5 | START(IEN) N TOGGLE,TOGGLE1,VALMBCK,VALMBG,VALMCNT,VALMSG,X,XMZ,XQORM,XQORNOD
|
---|
| 6 | S X="IORESET"
|
---|
| 7 | D ENDR^%ZISS
|
---|
| 8 | S VALMCNT=0,TOGGLE=0,TOGGLE1=0
|
---|
| 9 | D EN^VALM("PXRM EXTRACT SUMMARY")
|
---|
| 10 | Q
|
---|
| 11 | ;
|
---|
| 12 | BLDLIST(IEN,FINDINGS,PATIENT) ;Build workfile.
|
---|
| 13 | K ^TMP("PXRMETT",$J)
|
---|
| 14 | ;Build a list of extract summary totals.
|
---|
| 15 | N APPL,DATA,DUE,IND,LIST,NDUE,NAPPL,OLIST
|
---|
| 16 | N PLCNT,PLIST,RIEN,RNAME,SARRAY,SNAME,STATION,TOT
|
---|
| 17 | ;Build the list in alphabetical order.
|
---|
| 18 | S IND=0,VALMCNT=0,OLIST="",PLCNT=0
|
---|
| 19 | F S IND=$O(^PXRMXT(810.3,IEN,3,IND)) Q:'IND D
|
---|
| 20 | .S DATA=$G(^PXRMXT(810.3,IEN,3,IND,0)) Q:DATA=""
|
---|
| 21 | .S RIEN=$P(DATA,U,2) Q:'RIEN
|
---|
| 22 | .S RNAME=$P($G(^PXD(811.9,RIEN,0)),U)
|
---|
| 23 | .S STATION=$P(DATA,U,3),SARRAY=""
|
---|
| 24 | .D GETS^DIQ(4,STATION,99,"E","SARRAY")
|
---|
| 25 | .S SNAME=$G(SARRAY(4,STATION_",",99,"E"))
|
---|
| 26 | .I SNAME="" S SNAME=STATION
|
---|
| 27 | .S TOT=+$P(DATA,U,5),APPL=+$P(DATA,U,6),NAPPL=+$P(DATA,U,7)
|
---|
| 28 | .S DUE=+$P(DATA,U,8),NDUE=+$P(DATA,U,9)
|
---|
| 29 | .S PLIST=$P(DATA,U,4)
|
---|
| 30 | .I PLIST,PLIST'=OLIST D
|
---|
| 31 | ..S PLNAME=$P($G(^PXRMXP(810.5,PLIST,0)),U),OLIST=PLIST Q:PLNAME=""
|
---|
| 32 | ..S VALMCNT=VALMCNT+1,PLCNT=PLCNT+1
|
---|
| 33 | ..S ^TMP("PXRMETT",$J,"IDX",VALMCNT,PLCNT)=""
|
---|
| 34 | ..S ^TMP("PXRMETT",$J,"SEL",PLCNT)=PLIST
|
---|
| 35 | ..S ^TMP("PXRMETT",$J,VALMCNT,0)=$$RJ^XLFSTR(PLCNT,4," ")_" "_PLNAME
|
---|
| 36 | ..S VALMCNT=VALMCNT+1
|
---|
| 37 | ..S ^TMP("PXRMETT",$J,VALMCNT,0)=""
|
---|
| 38 | ..S ^TMP("PXRMETT",$J,"IDX",VALMCNT,PLCNT)=""
|
---|
| 39 | .S VALMCNT=VALMCNT+1
|
---|
| 40 | .S ^TMP("PXRMETT",$J,VALMCNT,0)=$$FRE(VALMCNT,RNAME,SNAME,TOT,APPL,NAPPL,DUE,NDUE)
|
---|
| 41 | .S ^TMP("PXRMETT",$J,"IDX",VALMCNT,PLCNT)=""
|
---|
| 42 | .S VALMCNT=VALMCNT+1
|
---|
| 43 | .S ^TMP("PXRMETT",$J,VALMCNT,0)=""
|
---|
| 44 | .S ^TMP("PXRMETT",$J,"IDX",VALMCNT,PLCNT)=""
|
---|
| 45 | .;Finding totals
|
---|
| 46 | .I +FINDINGS>0 D FBLD(PATIENT)
|
---|
| 47 | ;
|
---|
| 48 | S ^TMP("PXRMETT",$J,"VALMCNT")=VALMCNT
|
---|
| 49 | ;M ^TMP("PXRMETT",$J)=LIST
|
---|
| 50 | Q
|
---|
| 51 | ;
|
---|
| 52 | FBLD(PATIENT) ;Build finding list
|
---|
| 53 | N APPL,DATA,DUE,ETYP,EVAL,GNAM,GTYP
|
---|
| 54 | N NAPPL,NDUE,OGNAM,SEQ,SUB,TIEN,TNAME,TOTAL
|
---|
| 55 | S SUB=0,OGNAM=""
|
---|
| 56 | F S SUB=$O(^PXRMXT(810.3,IEN,3,IND,1,SUB)) Q:'SUB D
|
---|
| 57 | .S DATA=$G(^PXRMXT(810.3,IEN,3,IND,1,SUB,0)) Q:DATA=""
|
---|
| 58 | .S TIEN=$P(DATA,U,2) Q:'TIEN
|
---|
| 59 | .S TNAME=$P($G(^PXRMD(811.5,TIEN,0)),U)
|
---|
| 60 | .S SEQ=$P(DATA,U),ETYP=$P(DATA,U,3),GNAM=$P(DATA,U,9),GTYP=$P(DATA,U,10)
|
---|
| 61 | .S TOT=+$P(DATA,U,4),APPL=+$P(DATA,U,5),NAPPL=+$P(DATA,U,6)
|
---|
| 62 | .S DUE=+$P(DATA,U,7),NDUE=+$P(DATA,U,8)
|
---|
| 63 | .I OGNAM'=GNAM D
|
---|
| 64 | ..I OGNAM'="" D
|
---|
| 65 | ...S VALMCNT=VALMCNT+1
|
---|
| 66 | ...S ^TMP("PXRMETT",$J,VALMCNT,0)=""
|
---|
| 67 | ...S ^TMP("PXRMETT",$J,"IDX",VALMCNT,PLCNT)=""
|
---|
| 68 | ..S OGNAM=GNAM,VALMCNT=VALMCNT+1
|
---|
| 69 | ..S ^TMP("PXRMETT",$J,VALMCNT,0)=$$RJ^XLFSTR("Counting Group: ",21)_GNAM
|
---|
| 70 | ..S ^TMP("PXRMETT",$J,"IDX",VALMCNT,PLCNT)="",VALMCNT=VALMCNT+1
|
---|
| 71 | ..S ^TMP("PXRMETT",$J,VALMCNT,0)=$J("",6)_$$LJ^XLFSTR($$TXT^PXRMEPM(ETYP,GTYP),49)
|
---|
| 72 | ..S ^TMP("PXRMETT",$J,"IDX",VALMCNT,PLCNT)=""
|
---|
| 73 | .S VALMCNT=VALMCNT+1
|
---|
| 74 | .S ^TMP("PXRMETT",$J,VALMCNT,0)=$$FREF(VALMCNT,TNAME,SEQ,TOT,APPL,NAPPL,DUE,NDUE,ETYP)
|
---|
| 75 | .S ^TMP("PXRMETT",$J,"IDX",VALMCNT,PLCNT)=""
|
---|
| 76 | .I +PATIENT>0 D PBLD(IEN,IND,SUB)
|
---|
| 77 | S VALMCNT=VALMCNT+1
|
---|
| 78 | S ^TMP("PXRMETT",$J,VALMCNT,0)=""
|
---|
| 79 | S ^TMP("PXRMETT",$J,"IDX",VALMCNT,PLCNT)=""
|
---|
| 80 | Q
|
---|
| 81 | ;
|
---|
| 82 | PBLD(IEN,IND,SUB) ;
|
---|
| 83 | N ARRAY,NAME,LEN,PCNT,DFN,CNT,USTR
|
---|
| 84 | S VALMCNT=VALMCNT+1,CNT=0
|
---|
| 85 | S PCNT=0 F S PCNT=$O(^PXRMXT(810.3,IEN,3,IND,1,SUB,1,PCNT)) Q:PCNT'>0 D
|
---|
| 86 | .S DFN=$P($G(^PXRMXT(810.3,IEN,3,IND,1,SUB,1,PCNT,0)),U) Q:DFN'>0
|
---|
| 87 | .S NAME=$P($G(^DPT(DFN,0)),U)
|
---|
| 88 | .S CNT=CNT+1,ARRAY(NAME)=""
|
---|
| 89 | S ^TMP("PXRMETT",$J,VALMCNT,0)=" "_$$RJ^XLFSTR("Unique Applicable Patients ("_CNT_")",36," ")
|
---|
| 90 | S USTR=$P($G(^TMP("PXRMETT",$J,VALMCNT,0)),"U"),LEN=$L(USTR)
|
---|
| 91 | S ^TMP("PXRMETT",$J,"IDX",VALMCNT,PLCNT)=""
|
---|
| 92 | S NAME="" F S NAME=$O(ARRAY(NAME)) Q:NAME="" D
|
---|
| 93 | .S VALMCNT=VALMCNT+1
|
---|
| 94 | .S ^TMP("PXRMETT",$J,VALMCNT,0)=USTR_$$LJ^XLFSTR(NAME,36," ")
|
---|
| 95 | .S ^TMP("PXRMETT",$J,"IDX",VALMCNT,PLCNT)=""
|
---|
| 96 | S VALMCNT=VALMCNT+1
|
---|
| 97 | S ^TMP("PXRMETT",$J,VALMCNT,0)=" "
|
---|
| 98 | S ^TMP("PXRMETT",$J,"IDX",VALMCNT,PLCNT)=""
|
---|
| 99 | Q
|
---|
| 100 | ;
|
---|
| 101 | FLIST ;Toggle list with/without finding totals
|
---|
| 102 | S TOGGLE=(TOGGLE+1)#2
|
---|
| 103 | I TOGGLE=0 S TOGGLE1=0
|
---|
| 104 | ;Rebuild Workfile
|
---|
| 105 | D BLDLIST(IEN,TOGGLE,TOGGLE1)
|
---|
| 106 | ;Refresh
|
---|
| 107 | S VALMBCK="R",VALMBG=1
|
---|
| 108 | Q
|
---|
| 109 | ;
|
---|
| 110 | PLIST1 ;Toggle list with/without finding totals
|
---|
| 111 | S TOGGLE1=(TOGGLE1+1)#2
|
---|
| 112 | ;Rebuild Workfile
|
---|
| 113 | D BLDLIST(IEN,TOGGLE,TOGGLE1)
|
---|
| 114 | ;Refresh
|
---|
| 115 | S VALMBCK="R",VALMBG=1
|
---|
| 116 | Q
|
---|
| 117 | ;
|
---|
| 118 | FRE(NUMBER,NAME,SNAME,TOT,APPL,NAPPL,DUE,NDUE) ;Format reminder entry
|
---|
| 119 | N TEMP,TNAME,TSOURCE
|
---|
| 120 | S TEMP=" "
|
---|
| 121 | S TNAME=SNAME_"/"_$E(NAME,1,35-$L(SNAME))
|
---|
| 122 | S TEMP=TEMP_$$LJ^XLFSTR(TNAME,36," ")
|
---|
| 123 | S TEMP=TEMP_$$RJ^XLFSTR(TOT,8," ")
|
---|
| 124 | S TEMP=TEMP_$$RJ^XLFSTR(APPL,8," ")
|
---|
| 125 | S TEMP=TEMP_$$RJ^XLFSTR(NAPPL,7," ")
|
---|
| 126 | S TEMP=TEMP_$$RJ^XLFSTR(DUE,7," ")
|
---|
| 127 | S TEMP=TEMP_$$RJ^XLFSTR(NDUE,7," ")
|
---|
| 128 | Q TEMP
|
---|
| 129 | ;
|
---|
| 130 | FREF(NUMBER,NAME,SNAME,TOT,APPL,NAPPL,DUE,NDUE,ETYP) ;Format finding entry
|
---|
| 131 | N TEMP,TNAME,TSOURCE
|
---|
| 132 | S TEMP=" "
|
---|
| 133 | S TNAME=$E(NAME,1,31)
|
---|
| 134 | S TEMP=TEMP_" "_$$LJ^XLFSTR(TNAME,31," ")
|
---|
| 135 | S TEMP=TEMP_" "_$$RJ^XLFSTR(TOT,8," ")
|
---|
| 136 | I ETYP'="FC" D
|
---|
| 137 | .S TEMP=TEMP_$$RJ^XLFSTR(APPL,8," ")
|
---|
| 138 | .S TEMP=TEMP_$$RJ^XLFSTR(NAPPL,7," ")
|
---|
| 139 | .S TEMP=TEMP_$$RJ^XLFSTR(DUE,7," ")
|
---|
| 140 | .S TEMP=TEMP_$$RJ^XLFSTR(NDUE,7," ")
|
---|
| 141 | Q TEMP
|
---|
| 142 | ;
|
---|
| 143 | ENTRY ;Entry code
|
---|
| 144 | D BLDLIST(IEN,TOGGLE,TOGGLE1),XQORM
|
---|
| 145 | Q
|
---|
| 146 | ;
|
---|
| 147 | EXIT ;Exit code
|
---|
| 148 | K ^TMP("PXRMETT",$J)
|
---|
| 149 | K ^TMP("PXRMETTH",$J)
|
---|
| 150 | D CLEAN^VALM10
|
---|
| 151 | D FULL^VALM1
|
---|
| 152 | S VALMBCK="Q"
|
---|
| 153 | Q
|
---|
| 154 | ;
|
---|
| 155 | HDR ; Header code
|
---|
| 156 | S VALMHDR(1)="Extract Summary Name: "_$P($G(^PXRMXT(810.3,IEN,0)),U)
|
---|
| 157 | S VALMHDR(2)=" Extract Period: "_$$FMTE^XLFDT($P($G(^PXRMXT(810.3,IEN,0)),U,2),"5Z")_" - "_$$FMTE^XLFDT($P($G(^PXRMXT(810.3,IEN,0)),U,3),"5Z")
|
---|
| 158 | S VALMHDR(2)=VALMHDR(2)_" Created: "_$$FMTE^XLFDT($P($G(^PXRMXT(810.3,IEN,0)),U,6),"5Z")
|
---|
| 159 | ;S VALMHDR(3)=VALMHDR(3)_" Transmitted: "_$$FMTE^XLFDT($P($G(^PXRMXT(810.3,IEN,0)),U,4),"5Z")
|
---|
| 160 | S VALMSG="+ Next Screen - Prev Screen ?? More Actions"
|
---|
| 161 | Q
|
---|
| 162 | ;
|
---|
| 163 | HLP ;Help code
|
---|
| 164 | N ORU,ORUPRMT,XQORM
|
---|
| 165 | S SUB="PXRMETTH"
|
---|
| 166 | D EN^VALM("PXRM EXTRACT HELP")
|
---|
| 167 | Q
|
---|
| 168 | ;
|
---|
| 169 | INIT ;Init
|
---|
| 170 | S VALMCNT=0
|
---|
| 171 | Q
|
---|
| 172 | ;
|
---|
| 173 | XQORM S XQORM("#")=$O(^ORD(101,"B","PXRM EXTRACT SUMMARY SELECT ENTRY",0))_U_"1:"_VALMCNT
|
---|
| 174 | S XQORM("A")="Select Item: "
|
---|
| 175 | Q
|
---|
| 176 | ;
|
---|
| 177 | XSEL ;PXRM EXTRACT TOTALS SELECT ENTRY validation
|
---|
| 178 | N SEL,PLIEN
|
---|
| 179 | S SEL=$P(XQORNOD(0),"=",2)
|
---|
| 180 | ;Remove trailing ,
|
---|
| 181 | I $E(SEL,$L(SEL))="," S SEL=$E(SEL,1,$L(SEL)-1)
|
---|
| 182 | ;Invalid selection
|
---|
| 183 | I SEL["," D Q
|
---|
| 184 | .W $C(7),!,"Only one item number allowed." H 2
|
---|
| 185 | .S VALMBCK="R"
|
---|
| 186 | I ('SEL)!(SEL>VALMCNT)!('$D(@VALMAR@("SEL",SEL))) D Q
|
---|
| 187 | .W $C(7),!,SEL_" is not a valid item number." H 2
|
---|
| 188 | .S VALMBCK="R"
|
---|
| 189 | ;
|
---|
| 190 | ;Get the list ien.
|
---|
| 191 | S PLIEN=^TMP("PXRMETT",$J,"SEL",SEL)
|
---|
| 192 | ;
|
---|
| 193 | D START^PXRMLPP(PLIEN)
|
---|
| 194 | ;
|
---|
| 195 | S VALMBCK="R"
|
---|
| 196 | Q
|
---|
| 197 | ;
|
---|
| 198 | PEXIT ;Protocol exit code
|
---|
| 199 | S VALMSG="+ Next Screen - Prev Screen ?? More Actions"
|
---|
| 200 | D XQORM
|
---|
| 201 | Q
|
---|
| 202 | ;
|
---|
| 203 | PLIST(IEN) ;Patient list display
|
---|
| 204 | N IND,PLIEN,VALMY
|
---|
| 205 | D EN^VALM2(XQORNOD(0))
|
---|
| 206 | ;If there is no list quit.
|
---|
| 207 | I '$D(VALMY) Q
|
---|
| 208 | ;PXRMDONE is newed in PXRMLPM
|
---|
| 209 | S PXRMDONE=0
|
---|
| 210 | S IND=""
|
---|
| 211 | F S IND=$O(VALMY(IND)) Q:(+IND=0)!(PXRMDONE) D
|
---|
| 212 | .;Get the ien.
|
---|
| 213 | .S PLIEN=^TMP("PXRMETT",$J,"SEL",IND)
|
---|
| 214 | .D START^PXRMLPP(PLIEN)
|
---|
| 215 | ;
|
---|
| 216 | S VALMBCK="R"
|
---|
| 217 | Q
|
---|