[628] | 1 | DGNTQ ;ALB/RPM - NOSE/THROAT RADIUM TREATMENT QUESTIONS ; 8/24/01 12:59pm
|
---|
| 2 | ;;5.3;Registration;**397**;Aug 13, 1993
|
---|
| 3 | Q
|
---|
| 4 | ;
|
---|
| 5 | ASKSTAT(DGDIRA,DGDIRB,DGDIR0) ;
|
---|
| 6 | ;
|
---|
| 7 | ; Input
|
---|
| 8 | ; DGDIR0 - DIR(0) string
|
---|
| 9 | ; DGDIRA - DIR("A") string
|
---|
| 10 | ; DGDIRB - DIR("B") string
|
---|
| 11 | ;
|
---|
| 12 | ; Output
|
---|
| 13 | ; DGRSLT has the following values:
|
---|
| 14 | ; 0 - if user up-arrows, times out, or enters null
|
---|
| 15 | ; Y - user response
|
---|
| 16 | ;
|
---|
| 17 | K DIRUT
|
---|
| 18 | S DIR(0)=DGDIR0
|
---|
| 19 | S DIR("A")=DGDIRA
|
---|
| 20 | S DIR("B")=DGDIRB
|
---|
| 21 | D ^DIR
|
---|
| 22 | K DIR
|
---|
| 23 | I $D(DIRUT) S DGRSLT=0
|
---|
| 24 | E S DGRSLT=Y
|
---|
| 25 | ;
|
---|
| 26 | Q DGRSLT
|
---|
| 27 | ;
|
---|
| 28 | REG(DGDFN) ;Entry point from REGISTRATION
|
---|
| 29 | ;This sub-routine asks the Nose/Throat Radium Treatment questions
|
---|
| 30 | ;for Screen 6 of LOAD/EDIT PATIENT DATA. The answers are filed in
|
---|
| 31 | ;the NTR HISTORY file (#28.11) using the $$FILENTR^DGNTAPI API.
|
---|
| 32 | ;A caret "^" entered as an answer to any of the questions will cause
|
---|
| 33 | ;the sub-routine to QUIT without filing any data.
|
---|
| 34 | ;A user possessing the DGNT VERIFY security key will have additional
|
---|
| 35 | ;verification questions asked.
|
---|
| 36 | ;
|
---|
| 37 | ; Input
|
---|
| 38 | ; DGDFN - IEN to PATIENT file (#2)
|
---|
| 39 | ;
|
---|
| 40 | ; Output none
|
---|
| 41 | ;
|
---|
| 42 | N I,X,Y ;protect FileMan ^DIE variables
|
---|
| 43 | N DGNTIEN ;IEN from existing record from $$GETCUR API call
|
---|
| 44 | N DGNT ;data array from $$GETCUR API call
|
---|
| 45 | N DGDFLT ;default answer array
|
---|
| 46 | N DGUPD ;question response array subscripted by "NTR","AVI","SUB"
|
---|
| 47 | N DGRSLT ;result of filer API
|
---|
| 48 | N DGX ;generic counter
|
---|
| 49 | N DGXMT ;HL7 transmit flag
|
---|
| 50 | ;
|
---|
| 51 | ;initialize defaults
|
---|
| 52 | S DGNTIEN=$$GETCUR^DGNTAPI(DGDFN,"DGNT")
|
---|
| 53 | I 'DGNTIEN D
|
---|
| 54 | . F DGX="NTR","AVI","SUB","EDT","EUSR","HNC","HDT","HUSR","HSIT","VER","VDT","VUSR","VSIT" S DGUPD(DGX)=""
|
---|
| 55 | I +DGNTIEN>0,$D(DGNT) M DGUPD=DGNT
|
---|
| 56 | F DGX="NTR","AVI","SUB" D
|
---|
| 57 | . S DGDFLT(DGX)=$S($P(DGUPD(DGX),"^",2)]"":$P(DGUPD(DGX),"^",2),1:"NO")
|
---|
| 58 | ;
|
---|
| 59 | ;call reader API $$ASKSTAT passing DFN,DIR(0),DIR("B"),DIR("A")
|
---|
| 60 | S DGUPD("NTR")=$$ASKSTAT("Did you receive Nose or Throat Radium Treatments in the military? ",DGDFLT("NTR"),"28.11,.04AO")
|
---|
| 61 | Q:DGUPD("NTR")=0 ;user entered "^" or timed out
|
---|
| 62 | I DGUPD("NTR")="Y"!(DGUPD("NTR")="U") D
|
---|
| 63 | . S DGUPD("AVI")=$S($$DATOK(DGDFN,2550131):$$ASKSTAT("Did you serve as an aviator in the military before Jan 31, 1955? ",DGDFLT("AVI"),"28.11,.05AO"),1:"")
|
---|
| 64 | . Q:DGUPD("AVI")=0
|
---|
| 65 | . S DGUPD("SUB")=$S($$DATOK(DGDFN,2650101):$$ASKSTAT("Did you have submarine training in the military before Jan 1, 1965? ",DGDFLT("SUB"),"28.11,.06AO"),1:"")
|
---|
| 66 | ;quit if user entered "^" or timed out during questions
|
---|
| 67 | I DGUPD("NTR")=0!(DGUPD("AVI")=0!(DGUPD("SUB")=0)) Q
|
---|
| 68 | ;check for value change and add entry date, user, site and clear
|
---|
| 69 | ;the previous verification/head&neck values
|
---|
| 70 | F DGX="NTR","AVI","SUB" I DGUPD(DGX)'=$P($G(DGNT(DGX)),"^") D Q
|
---|
| 71 | . S DGUPD("EDT")=$$NOW^XLFDT
|
---|
| 72 | . S DGUPD("EUSR")=DUZ
|
---|
| 73 | . I DGUPD("VDT")]"" D ;clear verification
|
---|
| 74 | . . F DGX="VER","VDT","VUSR","VSIT" S DGUPD(DGX)=""
|
---|
| 75 | . I DGUPD("HDT")]"" D ;clear Head/Neck DX
|
---|
| 76 | . . F DGX="HNC","HDT","HUSR","HSIT" S DGUPD(DGX)=""
|
---|
| 77 | ;can user verify?
|
---|
| 78 | I $D(^XUSEC("DGNT VERIFY",DUZ)),(DGUPD("NTR")="Y"!(DGUPD("NTR")="U")) D VERIFY(DGDFN,.DGUPD)
|
---|
| 79 | ;flip Unknown to Yes if verified by Mil Med Record
|
---|
| 80 | I DGUPD("NTR")="U",DGUPD("VER")="M" S DGUPD("NTR")="Y"
|
---|
| 81 | ;file the data using filer API passing DFN and response array
|
---|
| 82 | F DGX="NTR","AVI","SUB","VER","HNC" S DGUPD(DGX)=$P(DGUPD(DGX),"^")
|
---|
| 83 | I $$CHANGE^DGNTUT(DGDFN,.DGUPD) D
|
---|
| 84 | . I DGUPD("NTR")="N" D
|
---|
| 85 | . . S DGUPD("VDT")=$$NOW^XLFDT
|
---|
| 86 | . . S DGUPD("VSIT")=$$SITE^DGNTUT
|
---|
| 87 | . S DGXMT=$S(DGUPD("VDT")'="":1,1:0)
|
---|
| 88 | . S DGRSLT=$$FILENTR^DGNTAPI(DGDFN,.DGUPD,DGXMT)
|
---|
| 89 | REGQ Q
|
---|
| 90 | ;
|
---|
| 91 | VERIFY(DGDFN,DGVUPD) ;Ask verification questions
|
---|
| 92 | ;
|
---|
| 93 | ; Input
|
---|
| 94 | ; DGDFN - IEN to PATIENT file (#2)
|
---|
| 95 | ; DGVUPD - array of question responses
|
---|
| 96 | ;
|
---|
| 97 | ; Output none
|
---|
| 98 | ;
|
---|
| 99 | N DGX ;generic index
|
---|
| 100 | N DGDFLT ;default answer array
|
---|
| 101 | ;
|
---|
| 102 | ;set up default answer array
|
---|
| 103 | S DGDFLT("VER")=$S($P($G(DGVUPD("VER")),"^",1)]"":$P(DGVUPD("VER"),"^",1),1:"")
|
---|
| 104 | S DGDFLT("HNC")=$S($P($G(DGVUPD("HNC")),"^",2)]"":$P(DGVUPD("HNC"),"^",2),1:"")
|
---|
| 105 | I $$ASKSTAT("Do you want to verify now? ","NO","YAO") D
|
---|
| 106 | . S DGVUPD("VER")=$$ASKSTAT("Nose and throat radium treatment verified by: ",DGDFLT("VER"),"28.11,1.01AO")
|
---|
| 107 | . I DGVUPD("VER")=0 S DGVUPD("VER")=DGDFLT("VER") Q
|
---|
| 108 | . I DGVUPD("VER")'=DGDFLT("VER") D
|
---|
| 109 | . . S DGVUPD("VDT")=$$NOW^XLFDT
|
---|
| 110 | . . S DGVUPD("VUSR")=DUZ
|
---|
| 111 | . . S DGVUPD("VSIT")=$$SITE^DGNTUT
|
---|
| 112 | . I DGVUPD("VER")'="N" D
|
---|
| 113 | . . S DGVUPD("HNC")=$$ASKSTAT("Has the veteran been diagnosed with Cancer of the Head and/or Neck? ",$S(DGDFLT("HNC")]"":DGDFLT("HNC"),1:"NO"),"28.11,2.01AO")
|
---|
| 114 | . . I DGVUPD("HNC")=0 S DGVUPD("HNC")=$E(DGDFLT("HNC")) Q
|
---|
| 115 | . . I DGVUPD("HNC")="N" S DGVUPD("HNC")=""
|
---|
| 116 | . . I DGVUPD("HNC")'=DGDFLT("HNC") D
|
---|
| 117 | . . . S DGVUPD("HDT")=$$NOW^XLFDT
|
---|
| 118 | . . . S DGVUPD("HUSR")=DUZ
|
---|
| 119 | . . . S DGVUPD("HSIT")=$$SITE^DGNTUT
|
---|
| 120 | Q
|
---|
| 121 | ;
|
---|
| 122 | DATOK(DGDFN,DGDATE) ;Validate dates before asking questions
|
---|
| 123 | ;Call $$SVCCHK to check Service Entry dates and if no Service
|
---|
| 124 | ;Entry dates are found then at least validate against DOB.
|
---|
| 125 | ;
|
---|
| 126 | ; Input
|
---|
| 127 | ; DGDFN - IEN to PATIENT file (#2)
|
---|
| 128 | ; DGDATE- FM forumat date to validate agains
|
---|
| 129 | ;
|
---|
| 130 | ; Output
|
---|
| 131 | ; DGRSLT - 0 = don't ask question
|
---|
| 132 | ; 1 = ask question
|
---|
| 133 | ;
|
---|
| 134 | N DGRSLT
|
---|
| 135 | S DGDFN=$G(DGDFN)
|
---|
| 136 | S DGDATE=$G(DGDATE)
|
---|
| 137 | S DGRSLT=1
|
---|
| 138 | S DGRSLT=$$SVCCHK(DGDFN,DGDATE)
|
---|
| 139 | I DGRSLT<0 S DGRSLT=$$DOBCHK(DGDFN,DGDATE)
|
---|
| 140 | Q DGRSLT
|
---|
| 141 | ;
|
---|
| 142 | SVCCHK(DGDFN,DGDATE) ;Did veteran serve prior to DGDATE?
|
---|
| 143 | ;This function searches the veteran's Service Entry dates to find the
|
---|
| 144 | ;earliest date. If a Service Entry date is found then it is compared
|
---|
| 145 | ;against the DGDATE parameter and returns a zero ("0") if DGDATE
|
---|
| 146 | ;precedes the Service Entry date. If the Service Entry date precedes
|
---|
| 147 | ;DGDATE a one ("1") is returned.
|
---|
| 148 | ;
|
---|
| 149 | ; Input
|
---|
| 150 | ; DGDFN - IEN to PATIENT file (#2)
|
---|
| 151 | ; DGDATE - FM format date to validate agains
|
---|
| 152 | ;
|
---|
| 153 | ; Output
|
---|
| 154 | ; DGRSLT - 0 = DGDATE precedes earliest Service Entry date.
|
---|
| 155 | ; 1 = Service Entry date precedes DGDATE
|
---|
| 156 | ; -1 = no Service Entry date found.
|
---|
| 157 | ;
|
---|
| 158 | N DFN,VASV,VAERR ;SVC^VADPT variables
|
---|
| 159 | N DGSVCE ;Service Entry date
|
---|
| 160 | N DGRSLT
|
---|
| 161 | S DGDFN=+$G(DGDFN)
|
---|
| 162 | S DGDATE=+$G(DGDATE)
|
---|
| 163 | S DGRSLT=-1
|
---|
| 164 | S DFN=DGDFN
|
---|
| 165 | D SVC^VADPT
|
---|
| 166 | F DGX=8:-1:6 I +$G(VASV(DGX,4))>0 D Q
|
---|
| 167 | . S DGRSLT=1
|
---|
| 168 | . I DGDATE<+$G(VASV(DGX,4)) S DGRSLT=0
|
---|
| 169 | Q DGRSLT
|
---|
| 170 | ;
|
---|
| 171 | DOBCHK(DGDFN,DGDATE) ;Was veteran too young to have served at DGDATE?
|
---|
| 172 | ;This function compares the veteran's DOB against DGDATE to determine
|
---|
| 173 | ;if the veteran was less than 15 years old at DGDATE. This logic
|
---|
| 174 | ;is based on POS^DGRPDD1.
|
---|
| 175 | ;
|
---|
| 176 | ; Input
|
---|
| 177 | ; DGDFN - IEN to PATIENT file (#2)
|
---|
| 178 | ; DGDATE- FM format date to validate against
|
---|
| 179 | ;
|
---|
| 180 | ; Output
|
---|
| 181 | ; DGRSLT - 0 = veteran too young
|
---|
| 182 | ; 1 = veteran old enough
|
---|
| 183 | ;
|
---|
| 184 | N DFN,VA,VADM,VAERR ;DEM^VADPT variables
|
---|
| 185 | N DGDOB
|
---|
| 186 | N DGRSLT
|
---|
| 187 | S DGDFN=+$G(DGDFN)
|
---|
| 188 | S DGDATE=+$G(DGDATE)
|
---|
| 189 | S DGRSLT=1
|
---|
| 190 | S DFN=DGDFN
|
---|
| 191 | D DEM^VADPT
|
---|
| 192 | S DGDOB=+$G(VADM(3))
|
---|
| 193 | I DGDATE-DGDOB\10000<15 S DGRSLT=0
|
---|
| 194 | Q DGRSLT
|
---|
| 195 | ;
|
---|