| 1 | PXRMDLG5 ; SLC/PJH - Reminder Dialog Edit/Inquiry ;11/08/2007
 | 
|---|
| 2 |  ;;2.0;CLINICAL REMINDERS;**4,6**;Feb 04, 2005;Build 123
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | ALT(DIEN,LEV,DSEQ,NODE,VIEW,NLINE,CNT,ALTLEN) ;
 | 
|---|
| 5 |  ;Display branching logic text in dialog summary view
 | 
|---|
| 6 |  N DATA,DNAM,DTYP,IEN,TERM,TNAME,TSTAT,TEMP
 | 
|---|
| 7 |  S DATA=$G(^PXRMD(801.41,DIEN,49))
 | 
|---|
| 8 |  I '+$P(DATA,U)!($P($G(DATA),U,2)="") Q
 | 
|---|
| 9 |  S TNAME=$P($G(^PXRMD(811.5,$P(DATA,U),0)),U)
 | 
|---|
| 10 |  S TSTAT=$S($P(DATA,U,2)="1":"TRUE",1:"FALSE")
 | 
|---|
| 11 |  I +$P(DATA,U,3)>0 D
 | 
|---|
| 12 |  .S IEN=$P(DATA,U,3),DNAM=$P($G(^PXRMD(801.41,IEN,0)),U)
 | 
|---|
| 13 |  .S DTYP=$S($P($G(^PXRMD(801.41,IEN,0)),U,4)="E":"Element",$P($G(^PXRMD(801.41,IEN,0)),U,4)="G":"Group")
 | 
|---|
| 14 |  I $G(DNAM)="" S TEMP="Suppressed if Reminder Term "_TNAME_" evaluates as "_TSTAT
 | 
|---|
| 15 |  I $G(DNAM)'="" S TEMP="Replaced by "_DNAM_" if Reminder Term "_TNAME_" evaluates as "_TSTAT
 | 
|---|
| 16 |  D TEXT(.NLINES,CNT,ALTLEN,TEMP,NODE)
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 | ASK(YESNO,PIEN) ;Confirm
 | 
|---|
| 20 |  K DIR,DIROUT,DIRUT,DNAME,DTOUT,DTYP,DUOUT,TEXT,X,Y
 | 
|---|
| 21 |  N DDATA,DNAME,DTYP
 | 
|---|
| 22 |  S DDATA=$G(^PXRMD(801.41,PIEN,0))
 | 
|---|
| 23 |  ;Parent name and type
 | 
|---|
| 24 |  S DNAME=$P(DDATA,U),DTYP=$P(DDATA,U,4)
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  S DIR(0)="YA0"
 | 
|---|
| 27 |  S DIR("A")="Add sequence "_SEQ_" to "
 | 
|---|
| 28 |  I DTYP="G" S DIR("A")=DIR("A")_"group "_DNAME_": "
 | 
|---|
| 29 |  E  S DIR("A")=DIR("A")_"reminder dialog ?: "
 | 
|---|
| 30 |  S DIR("B")="N",DIR("?")="Enter Y or N. For detailed help type ??"
 | 
|---|
| 31 |  S DIR("??")=U_"D XHLP^PXRMDLG(1)"
 | 
|---|
| 32 |  D ^DIR K DIR
 | 
|---|
| 33 |  I $D(DIROUT) S DTOUT=1
 | 
|---|
| 34 |  I $D(DTOUT)!($D(DUOUT)) Q
 | 
|---|
| 35 |  S YESNO=$E(Y(0)) I YESNO'="Y" S DUOUT=1
 | 
|---|
| 36 |  S VALMBCK="R"
 | 
|---|
| 37 |  Q
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 | BHELP(VALUE) ;
 | 
|---|
| 40 |  N HTEXT
 | 
|---|
| 41 |  D FULL^VALM1
 | 
|---|
| 42 |  ;Help text for Reminder Dialog Branching logic
 | 
|---|
| 43 |  I VALUE=1 D
 | 
|---|
| 44 |  .;Reminder Term field
 | 
|---|
| 45 |  .S HTEXT(1)="Enter a reminder term that will be used to determine if the reminder"
 | 
|---|
| 46 |  .S HTEXT(2)="element/group should be replaced or suppressed if the reminder term evaluation"
 | 
|---|
| 47 |  .S HTEXT(3)="matches the value in the Reminder Term Status field."
 | 
|---|
| 48 |  I VALUE=2 D
 | 
|---|
| 49 |  .;Reminder Term Status field
 | 
|---|
| 50 |  .S HTEXT(1)="Enter either 1 for true or 0 for false. This value will be used with the"
 | 
|---|
| 51 |  .S HTEXT(2)="reminder term field to determine if this item should be replaced with a"
 | 
|---|
| 52 |  .S HTEXT(3)="different element/group defined in the Replacement Element/Group field, or if"
 | 
|---|
| 53 |  .S HTEXT(4)="this item should be suppressed."
 | 
|---|
| 54 |  I VALUE=3 D
 | 
|---|
| 55 |  .;Replacement Element/Group field
 | 
|---|
| 56 |  .S HTEXT(1)="Enter an element/group that will be used as a replacement to thisitem, or"
 | 
|---|
| 57 |  .S HTEXT(2)="leave this field blank to suppress this item if the term evaluation"
 | 
|---|
| 58 |  .S HTEXT(3)="matches the value defined in the term status field. "
 | 
|---|
| 59 |  I VALUE=4 D
 | 
|---|
| 60 |  .;Patient Specific field
 | 
|---|
| 61 |  .S HTEXT(1)="Enter either 1 for true or 0 for false. This value must be set to true"
 | 
|---|
| 62 |  .S HTEXT(2)="if item in this dialog will be using reminder term to either replace an item"
 | 
|---|
| 63 |  .S HTEXT(3)="or to suppress an item."
 | 
|---|
| 64 |  D HELP^PXRMEUT(.HTEXT)
 | 
|---|
| 65 |  Q
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 | INQ(DIEN) ;INQ Inquiry/Print option
 | 
|---|
| 68 |  ; Used by 801.41 print templates
 | 
|---|
| 69 |  ; [PXRM REMINDER DIALOG]
 | 
|---|
| 70 |  ; [PXRM DIALOG GROUP]
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 |  N DEF,DEF1,DEF2 D DEF^PXRMRUTL("811.902",.DEF,.DEF1,.DEF2)
 | 
|---|
| 73 |  N NLINE,NODE,NSEL,SUB
 | 
|---|
| 74 |  S NLINE=0,NODE="PXRMDLG4",NSEL=0
 | 
|---|
| 75 |  K ^TMP(NODE,$J)
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 |  ;Components
 | 
|---|
| 78 |  W !!,"      Seq.       Dialog",!
 | 
|---|
| 79 |  D DETAIL^PXRMDLG4(DIEN,"",4,NODE)
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 |  ;Print lines from workfile
 | 
|---|
| 82 |  S SUB=""
 | 
|---|
| 83 |  F  S SUB=$O(^TMP(NODE,$J,SUB)) Q:'SUB  W !,^TMP(NODE,$J,SUB,0)
 | 
|---|
| 84 |  K ^TMP(NODE,$J)
 | 
|---|
| 85 |  Q
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 | MH(IEN) ;Allow IEN=109 (HX2) as a place holder for 601 entries that do not
 | 
|---|
| 88 |  ;have a corresponding 601.71 entry.
 | 
|---|
| 89 |  I IEN=109 Q 1
 | 
|---|
| 90 |  I $G(PXRMINST)=1 Q 1
 | 
|---|
| 91 |  N MAXNUM
 | 
|---|
| 92 |  S MAXNUM=+$P($G(^PXRM(800,1,"MH")),U)
 | 
|---|
| 93 |  I MAXNUM=0 S MAXNUM=25
 | 
|---|
| 94 |  Q $$ONECR^YTQPXRM5(IEN,MAXNUM)
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 | MHLICR(IEN) ;Called by input template PXRM EDIT ELEMENT. Preserve Y so template
 | 
|---|
| 97 |  ;branching works.
 | 
|---|
| 98 |  N Y
 | 
|---|
| 99 |  ;DBIA #5042
 | 
|---|
| 100 |  I $$RL^YTQPXRM3(IEN)="Y" D
 | 
|---|
| 101 |  .W !,"This MH test requires a license."
 | 
|---|
| 102 |  .W !,"The question text will not appear in the progress note.",!
 | 
|---|
| 103 |  .H 1
 | 
|---|
| 104 |  Q
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 | MSEL(NUM) ;
 | 
|---|
| 107 |  I NUM=4,'$$PATCH^XPDUTL("OR*3.0*243") D EN^DDIOL("THIS SELECTION IS NOT VALID, UNTIL CPRS 27 IS INSTALLED") Q 0
 | 
|---|
| 108 |  Q 1
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 | MHREQHLP ;
 | 
|---|
| 111 |  N TEXT
 | 
|---|
| 112 |  S TEXT(1)="Select 0, ""Optional open and optional complete (partial complete possible)"","
 | 
|---|
| 113 |  S TEXT(2)="if the user should be able to optionally select/open the MH test in the reminder dialog and optionally complete the MH test before the reminder dialog can be finished."
 | 
|---|
| 114 |  S TEXT(3)=" "
 | 
|---|
| 115 |  S TEXT(4)="Select 1, ""Required open and required complete before finish"","
 | 
|---|
| 116 |  S TEXT(5)="if the user is required to select/open and complete the MH test in the reminder dialog before the reminder dialog can be finished."
 | 
|---|
| 117 |  S TEXT(6)=" "
 | 
|---|
| 118 |  S TEXT(7)="Select 2, ""Optional open and required complete or cancel before finish"","
 | 
|---|
| 119 |  S TEXT(8)="if the user should be able to optionally select/open the MH test in the reminder dialog; however, if the user opens the MH test, then the user is required to complete or cancel the MH test before the reminder dialog can be finished."
 | 
|---|
| 120 |  S TEXT(9)=" "
 | 
|---|
| 121 |  S TEXT(10)="Note: Clicking the cancel button in the MH Test is considered the same as not opening the MH Test."
 | 
|---|
| 122 |  S TEXT(11)="Also, Option 2, ""Optional open and required complete or cancel before finish"", only works with CPRS 27 and"
 | 
|---|
| 123 |  S TEXT(12)="YS_MHA.dll. If Option 2 is selected and the user is using a pre-CPRS 27 version this option will be treated by CPRS as Option 1, ""Required open and required complete before finish""."
 | 
|---|
| 124 |  D HELP^PXRMEUT(.TEXT)
 | 
|---|
| 125 |  Q
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 | NTERM(DA,OTERM,NTERM) ;
 | 
|---|
| 128 |  I +OTERM=0 S OTERM=$P($G(DA),U)
 | 
|---|
| 129 |  I +NTERM=0 K OTERM Q 2
 | 
|---|
| 130 |  I +OTERM=0,+NTERM>0 K OTERM Q 1
 | 
|---|
| 131 |  I +OTERM'=+NTERM K OTERM Q 0
 | 
|---|
| 132 |  K OTERM
 | 
|---|
| 133 |  Q 1
 | 
|---|
| 134 |  ;
 | 
|---|
| 135 | OTERM(DA) ;
 | 
|---|
| 136 |  K OTERM
 | 
|---|
| 137 |  S OTERM=$P($G(^PXRMD(801.41,DA,49)),U)
 | 
|---|
| 138 |  Q
 | 
|---|
| 139 |  ;
 | 
|---|
| 140 | RESCHK(IEN) ;Called by input template PXRM EDIT ELEMENT. Preserve Y so template
 | 
|---|
| 141 |  ;branching works.
 | 
|---|
| 142 |  N CNT,FDA,MSG,RG,RGIEN,VALID,Y
 | 
|---|
| 143 |  S CNT=0
 | 
|---|
| 144 |  F  S CNT=$O(^PXRMD(801.41,IEN,51,CNT)) Q:CNT'>0  D
 | 
|---|
| 145 |  .S RGIEN=$P($G(^PXRMD(801.41,IEN,51,CNT,0)),U) I +RGIEN'>0 Q
 | 
|---|
| 146 |  .S RG=$P($G(^PXRMD(801.41,RGIEN,0)),U,1)
 | 
|---|
| 147 |  .I RG="" Q
 | 
|---|
| 148 |  .S VALID=$$RGLSCR(IEN,RG,RGIEN)
 | 
|---|
| 149 |  .I VALID Q
 | 
|---|
| 150 |  .W !,"Deleting the result group ",RG," from the element/group."
 | 
|---|
| 151 |  .S FDA(801.41121,CNT_","_IEN_",",.01)="@"
 | 
|---|
| 152 |  .D FILE^DIE("E","FDA","MSG")
 | 
|---|
| 153 |  .S RGKILL=1
 | 
|---|
| 154 |  .I $D(MSG) D AWRITE^PXRMUTIL("MSG")
 | 
|---|
| 155 |  Q
 | 
|---|
| 156 |  ;
 | 
|---|
| 157 | RSELEDIT(DA) ;
 | 
|---|
| 158 |  N NODE,RESULT
 | 
|---|
| 159 |  ;RESULT=0 EDIT NOTHING
 | 
|---|
| 160 |  ;RESULT=1 EDIT INFORMATIONAL TEXT
 | 
|---|
| 161 |  ;RESULT=2 EDIT EVERYTHING
 | 
|---|
| 162 |  S RESULT=2
 | 
|---|
| 163 |  I $G(PXRMINST)=1,DUZ(0)="@" Q RESULT
 | 
|---|
| 164 |  S NODE=$G(^PXRMD(801.41,DA,100))
 | 
|---|
| 165 |  I $P(NODE,U)="N" S RESULT=0
 | 
|---|
| 166 |  I RESULT=0,+$P(NODE,U,4)=0 S RESULT=1
 | 
|---|
| 167 |  Q RESULT
 | 
|---|
| 168 |  ;
 | 
|---|
| 169 | RGLSCR(DA,X,IEN) ;Input transform/screen for RESULT GROUP LIST
 | 
|---|
| 170 |  I $G(PXRMINST)=1 Q 1
 | 
|---|
| 171 |  I $G(PXRMEXCH)=1 Q 1
 | 
|---|
| 172 |  N HELP,MHTEST,TEXT,VALID,Y
 | 
|---|
| 173 |  S NMATCH=0
 | 
|---|
| 174 |  S MHTEST=$O(^PXRMD(801.41,"B",X),-1)
 | 
|---|
| 175 |  F  S MHTEST=$O(^PXRMD(801.41,"B",MHTEST)) Q:(NMATCH>1)!(MHTEST'[X)  S NMATCH=NMATCH+1
 | 
|---|
| 176 |  ;If there is an exact match to the user's input turn help on.
 | 
|---|
| 177 |  S HELP=$S($G(DIQUIET):0,NMATCH=1:1,1:0)
 | 
|---|
| 178 |  S VALID=1
 | 
|---|
| 179 |  ;Make sure the TYPE is a result group
 | 
|---|
| 180 |  I '$D(^PXRMD(801.41,"TYPE","S",IEN)) D
 | 
|---|
| 181 |  . I HELP S TEXT(1)="TYPE must be a result group."
 | 
|---|
| 182 |  . S VALID=0
 | 
|---|
| 183 |  ;Make sure the finding item for the element matches the 
 | 
|---|
| 184 |  ;MH Test assigned to the Result Group
 | 
|---|
| 185 |  S MHTEST=+$P($G(^PXRMD(801.41,DA,1)),U,5) I MHTEST="" D
 | 
|---|
| 186 |  . I HELP S TEXT(2)="The MH test is missing."
 | 
|---|
| 187 |  . S VALID=0
 | 
|---|
| 188 |  I +$P($G(^PXRMD(801.41,IEN,50)),U)'=MHTEST D
 | 
|---|
| 189 |  . I HELP S TEXT(3)="The finding item does not match the MH Test assigned to the Result Group"
 | 
|---|
| 190 |  . S VALID=0
 | 
|---|
| 191 |  ;Make sure a scale has been defined.
 | 
|---|
| 192 |  I +$P($G(^PXRMD(801.41,IEN,50)),U,2)'>0 D
 | 
|---|
| 193 |  . I HELP S TEXT(4)="An MH Scale must be defined."
 | 
|---|
| 194 |  . S VALID=0
 | 
|---|
| 195 |  ;Make sure it is not disabled.
 | 
|---|
| 196 |  I $P($G(^PXRMD(801.41,IEN,0)),U,3)'="" D
 | 
|---|
| 197 |  . S VALID=0
 | 
|---|
| 198 |  . I HELP D
 | 
|---|
| 199 |  .. N EM,TYPE
 | 
|---|
| 200 |  .. S TYPE=$P(^PXRMD(801.41,IEN,0),U,4)
 | 
|---|
| 201 |  .. S TYPE=$$EXTERNAL^DILFD(801.41,4,"",TYPE,.EM)
 | 
|---|
| 202 |  .. S TEXT(5)="The "_TYPE_" is disabled."
 | 
|---|
| 203 |  I HELP,'VALID D EN^DDIOL(.TEXT)
 | 
|---|
| 204 |  Q VALID
 | 
|---|
| 205 |  ;
 | 
|---|
| 206 | TERMS(DA,X) ;
 | 
|---|
| 207 |  N TERM
 | 
|---|
| 208 |  S TERM=$P($G(^PXRMD(801.41,DA,49)),U)
 | 
|---|
| 209 |  I +TERM=0 D  Q 0
 | 
|---|
| 210 |  .W !,"Cannot set Reminder Term Status if the Reminder Term field is blank"
 | 
|---|
| 211 |  .H 2
 | 
|---|
| 212 |  I +TERM>0,$G(X)="" Q 2
 | 
|---|
| 213 |  Q 1
 | 
|---|
| 214 |  ;
 | 
|---|
| 215 | TEXT(NLINES,CNT,ATLEN,TEMP,NODE) ;
 | 
|---|
| 216 |  N CNT1,NOUT,OUTPUT,WIDHT
 | 
|---|
| 217 |  S WIDTH=IOM-(2+(CNT+ATLEN))
 | 
|---|
| 218 |  S CNT1=1 D FORMATS^PXRMTEXT(1,WIDTH,TEMP,.NOUT,.OUTPUT)
 | 
|---|
| 219 |  I NOUT>0 F CNT1=1:1:NOUT D
 | 
|---|
| 220 |  .S NLINE=NLINE+1,^TMP(NODE,$J,NLINE,0)=$J("",2+(CNT+ATLEN))_OUTPUT(CNT1)
 | 
|---|
| 221 |  Q
 | 
|---|
| 222 |  ;
 | 
|---|