[613] | 1 | QACMAIL1 ;ERC/WASHCIOFO-Send data to reposititory ;11/29/99
|
---|
| 2 | ;;2.0;Patient Representative;**4,14,15,17**;07/25/1995
|
---|
| 3 | ;continuation routine - contains looping code, assigns variables
|
---|
| 4 | ;and stuffs values into temporary global ^TMP("QAC MAIL",$J,linecount)
|
---|
| 5 | ;
|
---|
| 6 | ENV ;environment check - to ensure that the Mailman patch creating
|
---|
| 7 | ;domain has beem installed.
|
---|
| 8 | N QACQ,QACE,ZPDQUIT
|
---|
| 9 | S QACQ="Q-PSS.MED.VA.GOV"
|
---|
| 10 | Q:$$FIND1^DIC(4.2,,"QX",QACQ,"B",,"QACE")
|
---|
| 11 | W !!?5,$C(7),"**** Installation of this patch requires that domain "
|
---|
| 12 | W !?10,QACQ," be defined."
|
---|
| 13 | S XPDQUIT=1
|
---|
| 14 | W !!!?5,"Refer to patch XM*999*133 for domain definition information."
|
---|
| 15 | W !?15,"<Patch QAC*2.0*4 installation aborted!>",!!
|
---|
| 16 | Q
|
---|
| 17 | LOOP ;
|
---|
| 18 | ;loop through file 745.1 looking for entries edited
|
---|
| 19 | ;since the previous rollup that have at least one issue code.
|
---|
| 20 | N QACD,QACDD,QACJ,QACLAST,QACOUNT
|
---|
| 21 | S QACJ=0
|
---|
| 22 | S QACLAST=$P($G(^QA(740,1,"QAC")),U,4)
|
---|
| 23 | ;(DBIA #3061 for lookup of value of QAC LAST RECORD in file #740)
|
---|
| 24 | S QACOUNT=0
|
---|
| 25 | F S QACJ=$O(^QA(745.1,"F",3,QACJ)) Q:QACJ'>0!($G(QACOUNT)>700) D WORK
|
---|
| 26 | I $G(QACLAST)'>0 D
|
---|
| 27 | . ;if QACLAST'>0, need to run rollup for the first time from 10/01/99
|
---|
| 28 | . S QACD=$O(^QA(745.1,"D",2991000)) Q:QACD'>0 D
|
---|
| 29 | . . S QACJ=$O(^QA(745.1,"D",QACD,QACJ)) Q:QACJ'>0 S QACJ=QACJ-1 D
|
---|
| 30 | . . . F S QACJ=$O(^QA(745.1,QACJ)) Q:QACJ'>0!($G(QACOUNT)>700) D WORK
|
---|
| 31 | S DIE="^QA(740,",DA=1,DR="753////^S X=QACLAST"
|
---|
| 32 | D ^DIE K DA,DIE,DR
|
---|
| 33 | Q
|
---|
| 34 | WORK ;
|
---|
| 35 | D NODE0
|
---|
| 36 | S QACLAST=QACJ
|
---|
| 37 | S QACOUNT=QACOUNT+1
|
---|
| 38 | S DIE="^QA(745.1,",DA=QACJ,DR="41///@" D ^DIE K DA,DIE,DR
|
---|
| 39 | Q
|
---|
| 40 | DATA ; Set data into local variables and then into ^TMP global for
|
---|
| 41 | ; inclusion in mail message.
|
---|
| 42 | N QACNODE2,QACNODE7
|
---|
| 43 | N QACK,QACL,QACM,QACN
|
---|
| 44 | N QACCOM,QACDAT,QACDATE,QACDAYS,QACDISC,QACDIV,QACDOB,QACELIG,QACISSC
|
---|
| 45 | N QACLSAT,QACMADE,QACNO,QACPGV,QACPSRV,QACRDAT,QACRDATE,QACROC
|
---|
| 46 | N QACSEAT,QACSEX,QACSSN,QACSTAT,QACTST
|
---|
| 47 | ;if record was previously rejected and is now closed set Roll-up status
|
---|
| 48 | ;to "0" (call ROLL(0)) - if still open but has IC call ROLL(2)
|
---|
| 49 | ;if record previously sent but "open", but is now closed, call ROLL(0)
|
---|
| 50 | N QACNOT
|
---|
| 51 | S QACROC=$P($G(QACNODE0),U)
|
---|
| 52 | I $G(QACNODE0)]"" D
|
---|
| 53 | . I $P($G(QACNODE0),U,3)]"" D
|
---|
| 54 | . . S QACSSN=$P(VADM(2),U) ;SSN
|
---|
| 55 | . . S QACDOB=$P(VADM(3),U) ;DOB
|
---|
| 56 | . . I $G(QACDOB) D ;Austin wanted dates in MMDDYYYY
|
---|
| 57 | . . . S QACDOB=$P($$FMTHL7^XLFDT(QACDOB),"-")
|
---|
| 58 | . . . S QACDOB=$E(QACDOB,5,8)_$E(QACDOB,1,4)
|
---|
| 59 | . . S QACSEX=$P(VADM(5),U)
|
---|
| 60 | . S QACDATE=$P(QACNODE0,U,2) ;date of contact
|
---|
| 61 | . I $G(QACDATE) D
|
---|
| 62 | . . S QACDATE=$P($$FMTHL7^XLFDT(QACDATE),"-")
|
---|
| 63 | . . S QACDATE=$E(QACDATE,5,8)_$E(QACDATE,1,4)
|
---|
| 64 | . S QACPSRV=$P($G(QACNODE0),U,14) ;period of service
|
---|
| 65 | . S QACPGV=$P($G(QACNODE0),U,15) ;Persian Gulf vet?
|
---|
| 66 | . S QACDIV=""
|
---|
| 67 | . I $P($G(QACNODE0),U,16)]"" D DIV16
|
---|
| 68 | . ;S QACDIV=$E(QACDIV,1,30)
|
---|
| 69 | . I $G(QACDIV)["Unknown" S QACDIV=""
|
---|
| 70 | . S QACELIG=$S($P($G(QACNODE0),U,4)]"":$O(^DIC(8,"B",$P($G(QACNODE0),U,4),0)),1:"UNK") ;eligibility
|
---|
| 71 | . S QACMADE=$P(QACNODE0,U,10)
|
---|
| 72 | NODE2 ; set variables for node 2
|
---|
| 73 | S QACNODE2=$G(^QA(745.1,QACJ,2))
|
---|
| 74 | I QACNODE2]"" S QACTST=$P($G(QACNODE2),U,2) ;treatment status
|
---|
| 75 | S QACINTAP=$P($G(QACNODE2),U,7) ;Internal Appeal
|
---|
| 76 | NODE3 ;issue code info
|
---|
| 77 | S QACK=0
|
---|
| 78 | F S QACK=$O(^QA(745.1,QACJ,3,QACK)) Q:QACK'>0 D
|
---|
| 79 | . S QACISSC(QACK)=$P(^QA(745.2,^QA(745.1,QACJ,3,QACK,0),0),U)
|
---|
| 80 | . I $P($G(^QA(745.1,QACJ,3,QACK,3,0)),U,3)'>0 S QACDISC(QACK,1)=QACISSC(QACK)_"^"
|
---|
| 81 | . S QACL=0
|
---|
| 82 | . F S QACL=$O(^QA(745.1,QACJ,3,QACK,3,QACL)) Q:QACL'>0 D
|
---|
| 83 | . . ;get code for discipline
|
---|
| 84 | . . N QACTEMP,QACTMP
|
---|
| 85 | . . S QACTMP=$P($G(^QA(745.1,QACJ,3,QACK,3,QACL,0)),U,2)
|
---|
| 86 | . . S QACTEMP=$S($G(QACTMP)]"":$P($G(^QA(745.5,QACTMP,0)),U),1:"")
|
---|
| 87 | . . S QACDISC(QACK,QACL)=QACISSC(QACK)_"^"_$G(QACTEMP)
|
---|
| 88 | NODE7 ;set variables for node 7
|
---|
| 89 | S QACNODE7=$G(^QA(745.1,QACJ,7)) I $G(QACNODE7)]"" D
|
---|
| 90 | . S QACSTAT=$P($G(QACNODE7),U,2) ;status
|
---|
| 91 | . S QACRDATE=$P(QACNODE7,U) ;resolution date
|
---|
| 92 | . I $G(QACRDATE) D
|
---|
| 93 | . . S QACRDATE=$P($$FMTHL7^XLFDT(QACRDATE),"-")
|
---|
| 94 | . . S QACRDATE=$E(QACRDATE,5,8)_$E(QACRDATE,1,4)
|
---|
| 95 | . S QACDAYS=$P($G(QACNODE7),U,4) ;days to resolution
|
---|
| 96 | NODE8 ; set variables for employee multiple
|
---|
| 97 | N QACC
|
---|
| 98 | S QACC=0
|
---|
| 99 | K QACEM,QACEMP
|
---|
| 100 | F S QACC=$O(^QA(745.1,QACJ,8,QACC)) Q:QACC'>0 D
|
---|
| 101 | . S QACEM=^QA(745.1,QACJ,8,QACC,0) Q:QACEM'>0
|
---|
| 102 | . S QACEM=$P($G(^VA(200,QACEM,0)),U)
|
---|
| 103 | . I $G(QACEM)]"" S QACEMP(QACJ,QACC)=QACEM
|
---|
| 104 | NODE12 ; set variables for source(s) of contact multiple
|
---|
| 105 | N QACD,QACSOR,QACSR
|
---|
| 106 | S QACD=0
|
---|
| 107 | F S QACD=$O(^QA(745.1,QACJ,12,QACD)) Q:QACD'>0 D
|
---|
| 108 | . S QACSR=^QA(745.1,QACJ,12,QACD,0) Q:QACSR']""
|
---|
| 109 | . I $G(QACSR)]"" S QACSOR(QACJ,QACD)=QACSR
|
---|
| 110 | STUFF ; Stuff variables into ^TMP global for use in ^XMD
|
---|
| 111 | ; field delimiter = "^"
|
---|
| 112 | ; line delimiter = "&"
|
---|
| 113 | ; record delimiter = "$"
|
---|
| 114 | ; message delimiter = "#"
|
---|
| 115 | N QACJJ,QACKK,QACLL
|
---|
| 116 | S QACRCNT=QACRCNT+1
|
---|
| 117 | ;check message size - need to ensure message < 32000
|
---|
| 118 | I $G(QACTCNT)>29000 D NEWMSG^QACMAIL0
|
---|
| 119 | X QACINC
|
---|
| 120 | S ^TMP("QAC MAIL",$J,QACLCNT)=$G(QACROC)_"^ROC^"_$G(QACDATE)_"^"_$G(QACSSN)_"^"_$G(QACSEX)_"^"_$G(QACDOB)_"^"_$G(QACSTAT)_"^"_$G(QACRDATE)_"^"_$G(QACTST)_"^"_$G(QACPSRV)
|
---|
| 121 | S ^TMP("QAC MAIL",$J,QACLCNT)=^TMP("QAC MAIL",$J,QACLCNT)_"^"_$G(QACPGV)_"^"_$G(QACDIV)_"^"_$G(QACDAYS)_"^"_$G(QACELIG)_"^"_$G(QACMADE)_"^"_$G(QACVISN)_"^"_$G(QACINTAP)_"&"
|
---|
| 122 | STFFISSC ;stuff issue code values into ^TMP
|
---|
| 123 | ;using "~" as an Issue Code delimiter
|
---|
| 124 | N QACCHCNT
|
---|
| 125 | S (QACJJ,QACKK)=0
|
---|
| 126 | I $O(QACISSC(0))'>0 Q
|
---|
| 127 | X QACINC S ^TMP("QAC MAIL",$J,QACLCNT)=$G(QACROC)_"^ISSC^"
|
---|
| 128 | F S QACJJ=$O(QACDISC(QACJJ)) Q:QACJJ'>0 D
|
---|
| 129 | . S QACKK=0
|
---|
| 130 | . F S QACKK=$O(QACDISC(QACJJ,QACKK)) Q:QACKK'>0 D
|
---|
| 131 | . . N QACLIN,QACLINE
|
---|
| 132 | . . S QACLINE=QACDISC(QACJJ,QACKK)
|
---|
| 133 | . . ; adding employee(s) to each issue code. In future employee (and
|
---|
| 134 | . . ; location) will be associated with Issue Code - code will change
|
---|
| 135 | . . ; here. For now, location will be represented by "" in last piece
|
---|
| 136 | . . ; There will be one IC, one Disc., one location and one employee
|
---|
| 137 | . . ; separated by "^", and each 4 field set separated by "~"
|
---|
| 138 | . . S (QACE,QACCHCNT)=0
|
---|
| 139 | . . I $O(QACEMP(0))'>0 S ^TMP("QAC MAIL",$J,QACLCNT)=^TMP("QAC MAIL",$J,QACLCNT)_QACLINE_"^^~"
|
---|
| 140 | . . F S QACE=$O(QACEMP(QACJ,QACE)) Q:QACE'>0 D
|
---|
| 141 | . . . S QACLIN=QACLINE_"^"_$G(QACEMP(QACJ,QACE))_"^~" ;space for loc
|
---|
| 142 | . . . I $L(QACLIN)+$L(^TMP("QAC MAIL",$J,QACLCNT))>200 D
|
---|
| 143 | . . . . X QACINC
|
---|
| 144 | . . . . S ^TMP("QAC MAIL",$J,QACLCNT)=""
|
---|
| 145 | . . . S ^TMP("QAC MAIL",$J,QACLCNT)=^TMP("QAC MAIL",$J,QACLCNT)_QACLIN
|
---|
| 146 | . . . S QACLIN=""
|
---|
| 147 | S ^TMP("QAC MAIL",$J,QACLCNT)=^TMP("QAC MAIL",$J,QACLCNT)_"&"
|
---|
| 148 | STFFSOUR ;stuff values for source(s) of contact into ^TMP
|
---|
| 149 | X QACINC
|
---|
| 150 | S ^TMP("QAC MAIL",$J,QACLCNT)=$G(QACROC)_"^SOUR"
|
---|
| 151 | N QACF
|
---|
| 152 | S QACF=0
|
---|
| 153 | F S QACF=$O(QACSOR(QACJ,QACF)) Q:QACF'>0 D
|
---|
| 154 | . S ^TMP("QAC MAIL",$J,QACLCNT)=^TMP("QAC MAIL",$J,QACLCNT)_"^"_$G(QACSOR(QACJ,QACF))
|
---|
| 155 | S ^TMP("QAC MAIL",$J,QACLCNT)=^TMP("QAC MAIL",$J,QACLCNT)_"$"
|
---|
| 156 | Q
|
---|
| 157 | NODE0 ;set values from zero node
|
---|
| 158 | N DFN,QACNAME,QACNODE0,QACNOFLG,VADM
|
---|
| 159 | S QACNODE0=^QA(745.1,QACJ,0)
|
---|
| 160 | I $P($G(QACNODE0),U,3)]"" D
|
---|
| 161 | . S DFN=$P(QACNODE0,U,3)
|
---|
| 162 | . D ^VADPT
|
---|
| 163 | S QACNAME=$S($G(VADM(1))]"":VADM(1),1:"No Patient Involved")
|
---|
| 164 | ;If no issue code count record and go to next entry.
|
---|
| 165 | I $P($G(^QA(745.1,QACJ,3,0)),U,3)<1 D
|
---|
| 166 | . S QACNOCNT=$G(QACNOCNT)+1,QACNOT=1
|
---|
| 167 | . ;D ROLL^QACMAIL0(1) ;sets Roll-Up Status to rejected
|
---|
| 168 | . Q
|
---|
| 169 | I $G(QACNOT)=1 S QACNOT=0 Q
|
---|
| 170 | D DATA
|
---|
| 171 | Q
|
---|
| 172 | LOOP1 ;post-install to check previously rejected records (see if they now
|
---|
| 173 | ;have Issue Codes) and to get any records since last run of the
|
---|
| 174 | ;rollup. for QAC*2*17. will set these records to a Rollup Status
|
---|
| 175 | ;of 3, which means they will be transmitted with the next run.
|
---|
| 176 | N QACF,QACJ
|
---|
| 177 | F QACF=1,2 S QACJ=0 D
|
---|
| 178 | . F S QACJ=$O(^QA(745.1,"F",QACF,QACJ)) Q:QACJ'>0 D
|
---|
| 179 | . . I $P($G(^QA(745.1,QACJ,3,0)),U,3)'>0 D DIE("@") Q
|
---|
| 180 | . . D DIE(3)
|
---|
| 181 | S QACJ=$P(^QA(740,1,"QAC"),U,4)
|
---|
| 182 | I $G(QACJ)']"" Q
|
---|
| 183 | F S QACJ=$O(^QA(745.1,QACJ)) Q:QACJ'>0 D
|
---|
| 184 | . D DIE(3)
|
---|
| 185 | Q
|
---|
| 186 | DIE(QACE) ;
|
---|
| 187 | S DIE="^QA(745.1,",DA=QACJ,DR="41///^S X=QACE"
|
---|
| 188 | D ^DIE
|
---|
| 189 | K DA,DIE,DR,QACE
|
---|
| 190 | Q
|
---|
| 191 | DIV16 ;division field, #37
|
---|
| 192 | S QACNO=$P($G(QACNODE0),U,16)
|
---|
| 193 | ;D INST^QACUTL0(QACNO,.QACDIV)
|
---|
| 194 | S QACDIV=$P($G(^DIC(4,QACNO,99)),U)
|
---|
| 195 | Q
|
---|