[613] | 1 | PXRMLRED ; SLC/PJH - List Rule Editor ;05/30/2006
|
---|
| 2 | ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
|
---|
| 3 | ;
|
---|
| 4 | ;Main entry point for PXRM LIST RULE EDIT/DISPLAY
|
---|
| 5 | START(IEN,PXRMTYP) ;
|
---|
| 6 | N PXRMDONE,VALMBCK,VALMCNT,VALMSG,X,XMZ,XQORM,XQORNOD
|
---|
| 7 | S X="IORESET"
|
---|
| 8 | D ENDR^%ZISS
|
---|
| 9 | S VALMCNT=0
|
---|
| 10 | D EN^VALM("PXRM LIST RULE DISPLAY/EDIT")
|
---|
| 11 | Q
|
---|
| 12 | ;
|
---|
| 13 | ADD ;Add Rule
|
---|
| 14 | N DA,DIC,DONE,DTOUT,DUOUT,DLAYGO,HED,TYP,Y
|
---|
| 15 | S HED="ADD "_$$TXT,TYP=PXRMTYP,DONE=0
|
---|
| 16 | W IORESET,!
|
---|
| 17 | F D Q:$D(DTOUT) Q:DONE
|
---|
| 18 | .S DIC="^PXRM(810.4,"
|
---|
| 19 | .;Set the starting place for additions.
|
---|
| 20 | .D SETSTART^PXRMCOPY(DIC)
|
---|
| 21 | .S DIC(0)="AELMQ",DLAYGO=810.4
|
---|
| 22 | .S DIC("A")="Select "_$$TXT_" to add: "
|
---|
| 23 | .S DIC("DR")=".03///"_TYP
|
---|
| 24 | .D ^DIC
|
---|
| 25 | .I $D(DUOUT) S DTOUT=1
|
---|
| 26 | .I ($D(DTOUT))!($D(DUOUT)) Q
|
---|
| 27 | .I Y=-1 K DIC S DTOUT=1 Q
|
---|
| 28 | .I $P(Y,U,3)'=1 W !,"This rule name already exists" Q
|
---|
| 29 | .S DA=$P(Y,U,1)
|
---|
| 30 | .;Edit Rule
|
---|
| 31 | .D EDIT(DA,TYP)
|
---|
| 32 | .S:$D(DA) DONE=1
|
---|
| 33 | Q
|
---|
| 34 | ;
|
---|
| 35 | BLDLIST(IEN,TYP) ;Build workfile
|
---|
| 36 | N FLDS,GBL,PXRMROOT
|
---|
| 37 | I TYP=1 S FLDS="[PXRM FINDING RULE]"
|
---|
| 38 | I TYP=2 S FLDS="[PXRM REMINDER RULE]"
|
---|
| 39 | I TYP=3 S FLDS="[PXRM RULE SET]"
|
---|
| 40 | I TYP=5 S FLDS="[PXRM PATIENT LIST RULE]"
|
---|
| 41 | S GBL="^TMP(""PXRMLRED"",$J)"
|
---|
| 42 | S GBL=$NA(@GBL)
|
---|
| 43 | S PXRMROOT="^PXRM(810.4,"
|
---|
| 44 | K ^TMP("PXRMLRED",$J)
|
---|
| 45 | D DIP^PXRMUTIL(GBL,IEN,PXRMROOT,FLDS)
|
---|
| 46 | S VALMCNT=$O(^TMP("PXRMLRED",$J,""),-1)
|
---|
| 47 | Q
|
---|
| 48 | ;
|
---|
| 49 | EDIT(DA,TYP) ;Edit Rule
|
---|
| 50 | I '$$VEDIT^PXRMUTIL("^PXRM(810.4,",DA) D Q
|
---|
| 51 | .W !!,?5,"VA- and national class rules may not be edited" H 2
|
---|
| 52 | .S VALMBCK="R"
|
---|
| 53 | ;
|
---|
| 54 | Q:'$$LOCK(DA)
|
---|
| 55 | W IORESET
|
---|
| 56 | N CS1,CS2,DIC,DIDEL,DIE,DR,DTOUT,DUOUT,ODA,Y
|
---|
| 57 | ;Save checksum
|
---|
| 58 | S CS1=$$FILE^PXRMEXCS(810.4,DA)
|
---|
| 59 | ;Check rule type
|
---|
| 60 | S DIE="^PXRM(810.4,",DIDEL=810.4,ODA=DA
|
---|
| 61 | ;List Rule
|
---|
| 62 | I TYP=1 S DR="[PXRM EDIT FINDING RULE]"
|
---|
| 63 | ;Reminder Rule
|
---|
| 64 | I TYP=2 S DR="[PXRM EDIT REMINDER RULE]"
|
---|
| 65 | ;Rule Set
|
---|
| 66 | I TYP=3 S DR="[PXRM EDIT RULE SET]"
|
---|
| 67 | ;Report Output Rule
|
---|
| 68 | I TYP=4 S DR="[PXRM EDIT REPORT OUTPUT RULE]"
|
---|
| 69 | ;Patient List Rule
|
---|
| 70 | I TYP=5 S DR="[PXRM EDIT PATIENT LIST RULE]"
|
---|
| 71 | ;Display any sets using the rule
|
---|
| 72 | I (TYP'=3) D USE(DA,1)
|
---|
| 73 | ;
|
---|
| 74 | ;Save list of components for rule set
|
---|
| 75 | I TYP=3 N COMP D COMP^PXRMLREX(DA,.COMP)
|
---|
| 76 | ;
|
---|
| 77 | ;Edit rule then unlock
|
---|
| 78 | D ^DIE,UNLOCK(ODA)
|
---|
| 79 | ;Deleted ???
|
---|
| 80 | I '$D(DA) D Q
|
---|
| 81 | .;Option to delete components
|
---|
| 82 | .I TYP=3,$D(COMP) D DELETE^PXRMLREX(.COMP)
|
---|
| 83 | .S VALMBCK="Q"
|
---|
| 84 | ;
|
---|
| 85 | ;Update edit history
|
---|
| 86 | D
|
---|
| 87 | .S CS2=$$FILE^PXRMEXCS(810.4,DA) Q:CS2=CS1 Q:+CS2=0
|
---|
| 88 | .D SEHIST^PXRMUTIL(810.4,DIC,DA)
|
---|
| 89 | S VALMBCK="R"
|
---|
| 90 | Q
|
---|
| 91 | ;
|
---|
| 92 | ENTRY ;Entry code
|
---|
| 93 | D BLDLIST(IEN,PXRMTYP)
|
---|
| 94 | Q
|
---|
| 95 | ;
|
---|
| 96 | EXIT ;Exit code
|
---|
| 97 | K ^TMP("PXRMLRED",$J)
|
---|
| 98 | K ^TMP("PXRMLREDH",$J)
|
---|
| 99 | D CLEAN^VALM10
|
---|
| 100 | D FULL^VALM1
|
---|
| 101 | S VALMBCK="Q"
|
---|
| 102 | Q
|
---|
| 103 | ;
|
---|
| 104 | HDR ; Header code
|
---|
| 105 | S VALMHDR(1)="Available "_$$LIT(PXRMTYP)_":"
|
---|
| 106 | S VALMSG="+ Next Screen - Prev Screen ?? More Actions"
|
---|
| 107 | Q
|
---|
| 108 | ;
|
---|
| 109 | HLP ;Help code
|
---|
| 110 | N ORU,ORUPRMT,SUB,XQORM
|
---|
| 111 | S SUB="PXRMLREDH"
|
---|
| 112 | D EN^VALM("PXRM LIST RULE HELP")
|
---|
| 113 | Q
|
---|
| 114 | ;
|
---|
| 115 | INIT ;Init
|
---|
| 116 | S VALMCNT=0
|
---|
| 117 | Q
|
---|
| 118 | ;
|
---|
| 119 | LIT(VIEW) ;Header text depnds on view
|
---|
| 120 | Q $S(PXRMTYP=3:"Rule Sets",PXRMTYP=1:"List Rules",PXRMTYP=2:"Reminder List Rules",1:"Unknown")
|
---|
| 121 | ;
|
---|
| 122 | LOCK(DA) ;Lock the record
|
---|
| 123 | L +^PXRM(810.4,DA):0 I Q 1
|
---|
| 124 | E W !!,?5,"Another user is editing this file, try later" H 2 Q 0
|
---|
| 125 | ;
|
---|
| 126 | LRDESC ;Display list rule fields - called by [PXRM RULE SET]
|
---|
| 127 | N IEN
|
---|
| 128 | S IEN=$P(X,U,2) Q:'IEN
|
---|
| 129 | D LROUT(IEN,23)
|
---|
| 130 | Q
|
---|
| 131 | ;
|
---|
| 132 | LREDIT ;Edit Rule
|
---|
| 133 | D EDIT^PXRMLRED(IEN,PXRMTYP)
|
---|
| 134 | ;Rebuild Workfile
|
---|
| 135 | D BLDLIST(IEN,PXRMTYP)
|
---|
| 136 | Q
|
---|
| 137 | ;
|
---|
| 138 | LREND(END,RJC) ;Display end date
|
---|
| 139 | I END]"" W !,$$RJ^XLFSTR("LR Ending Date: ",RJC)_END
|
---|
| 140 | Q
|
---|
| 141 | ;
|
---|
| 142 | LROUT(IEN,RJC) ;Output list rule display
|
---|
| 143 | ;also called for parameter display from PXRMEPM
|
---|
| 144 | N BEG,DATA,END,LRN,PLIST,PLIEN,TERM,TIEN,TYPE
|
---|
| 145 | S DATA=$G(^PXRM(810.4,IEN,0))
|
---|
| 146 | S LRN=$P(DATA,U,1)
|
---|
| 147 | ;Type of list rule, start and end dates
|
---|
| 148 | S TYPE=$P(DATA,U,3),BEG=$P(DATA,U,4),END=$P(DATA,U,5)
|
---|
| 149 | W !,$$RJ^XLFSTR("List Rule: ",RJC),LRN
|
---|
| 150 | ;Display description
|
---|
| 151 | W !,$$RJ^XLFSTR("Description: ",RJC),$P(DATA,U,2)
|
---|
| 152 | ;Display Rule Type
|
---|
| 153 | W !,$$RJ^XLFSTR("Rule Type: ",RJC)
|
---|
| 154 | ;Finding Rule
|
---|
| 155 | I TYPE=1 D
|
---|
| 156 | .W "FINDING RULE"
|
---|
| 157 | .W !,$$RJ^XLFSTR("Reminder Term: ",RJC+2)
|
---|
| 158 | .S TIEN=$P(DATA,U,7) Q:'TIEN
|
---|
| 159 | .;Display Term name
|
---|
| 160 | .W $P($G(^PXRMD(811.5,TIEN,0)),U)
|
---|
| 161 | I TYPE=2 D
|
---|
| 162 | .W "REMINDER RULE"
|
---|
| 163 | .W !,$$RJ^XLFSTR("Reminder Definition: ",RJC+2)
|
---|
| 164 | .S RIEN=$P(DATA,U,10) Q:'RIEN
|
---|
| 165 | .;Display Reminder Defintion name
|
---|
| 166 | .W $P($G(^PXD(811.9,RIEN,0)),U,1)
|
---|
| 167 | ;Patient List Rule
|
---|
| 168 | I TYPE=5 D
|
---|
| 169 | .W "PATIENT LIST RULE"
|
---|
| 170 | .N EXISTPL,EXTRPL
|
---|
| 171 | .S EXISTPL=$P(DATA,U,8)
|
---|
| 172 | .I EXISTPL]"" D
|
---|
| 173 | .. S EXISTPL=$P(^PXRMXP(810.5,EXISTPL,0),U,1)
|
---|
| 174 | .. W !,$$RJ^XLFSTR("Use Existing PT List: ",RJC+2),EXISTPL
|
---|
| 175 | .S EXTRPL=$G(^PXRM(810.4,IEN,1))
|
---|
| 176 | .I EXTRPL]"" W !,$$RJ^XLFSTR("Use Extract PT List Named: ",RJC+5)
|
---|
| 177 | .I (RJC+5+$L(EXTRPL))>80 W !," "
|
---|
| 178 | .W EXTRPL
|
---|
| 179 | ;Format Start and Stop Dates
|
---|
| 180 | D LRSTRT(BEG,RJC+2),LREND(END,RJC+2)
|
---|
| 181 | Q
|
---|
| 182 | ;
|
---|
| 183 | LRSTRT(BEG,RJC) ;Display start date
|
---|
| 184 | I BEG]"" W !,$$RJ^XLFSTR("LR Beginning Date: ",RJC)_BEG
|
---|
| 185 | Q
|
---|
| 186 | ;
|
---|
| 187 | PEXIT ;PXRM EXCH MENU protocol exit code
|
---|
| 188 | S VALMSG="+ Next Screen - Prev Screen ?? More Actions"
|
---|
| 189 | ;Reset after page up/down etc
|
---|
| 190 | Q
|
---|
| 191 | ;
|
---|
| 192 | SCREEN ;validate rule type
|
---|
| 193 | Q:'$G(DA(1))
|
---|
| 194 | ;rule sets may not be a component of a rule set
|
---|
| 195 | I $P($G(^PXRM(810.4,DA(1),0)),U,3) S DIC("S")="I $P(^(0),U,3)'=3"
|
---|
| 196 | Q
|
---|
| 197 | ;
|
---|
| 198 | SEQPRT ;Display list rule sequence fields - called by [PXRM RULE SET]
|
---|
| 199 | N EXTRPL,IND,LR,LRN,OPER,RJC,RR
|
---|
| 200 | N SEQ,SEQBDT,SEQEDT,TEMP,TEXT
|
---|
| 201 | S RJC=22
|
---|
| 202 | S SEQ=""
|
---|
| 203 | F S SEQ=$O(^PXRM(810.4,D0,30,"B",SEQ)) Q:SEQ="" D
|
---|
| 204 | . S IND=$O(^PXRM(810.4,D0,30,"B",SEQ,""))
|
---|
| 205 | . S TEMP=^PXRM(810.4,D0,30,IND,0)
|
---|
| 206 | . S LR=+$P(TEMP,U,2),OPER=$P(TEMP,U,3)
|
---|
| 207 | . S OPER=$$EXTERNAL^DILFD(810.41,.03,"",OPER)
|
---|
| 208 | . S TEMP=$G(^PXRM(810.4,D0,30,IND,1))
|
---|
| 209 | . S SEQBDT=$P(TEMP,U,1),SEQEDT=$P(TEMP,U,2)
|
---|
| 210 | . S EXTRPL=$G(^PXRM(810.4,D0,1))
|
---|
| 211 | . ;Output the sequence fields
|
---|
| 212 | . W !!,$$RJ^XLFSTR("Sequence: ",RJC),SEQ
|
---|
| 213 | . I SEQBDT]"" W !,$$RJ^XLFSTR("Seq Beginning Date: ",RJC),SEQBDT
|
---|
| 214 | . I SEQEDT]"" W !,$$RJ^XLFSTR("Seq Ending Date: ",RJC),SEQEDT
|
---|
| 215 | . W !,$$RJ^XLFSTR("Operation: ",RJC),OPER
|
---|
| 216 | .;Output the List Rule information
|
---|
| 217 | . D LROUT^PXRMLRED(LR,RJC)
|
---|
| 218 | Q
|
---|
| 219 | ;
|
---|
| 220 | TXT() ;Return Rule Type text
|
---|
| 221 | N TEXT
|
---|
| 222 | S TEXT="OTHER"
|
---|
| 223 | I PXRMTYP=1 S TEXT="FINDING RULE"
|
---|
| 224 | I PXRMTYP=2 S TEXT="REMINDER DEFINITION RULE"
|
---|
| 225 | I PXRMTYP=3 S TEXT="RULE SET"
|
---|
| 226 | I PXRMTYP=5 S TEXT="PATIENT LIST RULE"
|
---|
| 227 | Q TEXT
|
---|
| 228 | ;
|
---|
| 229 | UNLOCK(DA) ;Unlock the record
|
---|
| 230 | L -^PXRM(810.4,DA)
|
---|
| 231 | Q
|
---|
| 232 | ;
|
---|
| 233 | USE(DA,EDIT) ;Display usage of list rule
|
---|
| 234 | N TTAB
|
---|
| 235 | S TAB=$S(EDIT:0,1:7)
|
---|
| 236 | W !!,?TAB,"Used by:"
|
---|
| 237 | ;If the AD cross ref is missing this is not used
|
---|
| 238 | I '$D(^PXRM(810.4,"AD",DA)) W " Not used by any rule set",! Q
|
---|
| 239 | ;
|
---|
| 240 | N LRNAM,LRTYP,PXRMTYP
|
---|
| 241 | S TAB=TAB+10
|
---|
| 242 | ;Check if used by any rule sets
|
---|
| 243 | S SUB=0
|
---|
| 244 | F S SUB=$O(^PXRM(810.4,"AD",DA,SUB)) Q:'SUB D
|
---|
| 245 | .S DATA=$G(^PXRM(810.4,SUB,0)) Q:DATA=""
|
---|
| 246 | .S LRNAM=$P(DATA,U) Q:LRNAM=""
|
---|
| 247 | .S PXRMTYP=$P(DATA,U,3),LRTYP=$$TXT^PXRMLRED
|
---|
| 248 | .W ?TAB,LRNAM_" ("_LRTYP_")",!
|
---|
| 249 | Q
|
---|
| 250 | ;
|
---|
| 251 | USET ;Usage display called from PXRM LIST RULE print template
|
---|
| 252 | D USE(IEN,0)
|
---|
| 253 | Q
|
---|
| 254 | ;
|
---|