| 1 | PXRMGECJ ;SLC/AGP,JVS - Restore Func ;7/14/05  10:42 | 
|---|
| 2 | ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21 | 
|---|
| 3 | ;Restore GEC Referral to open status | 
|---|
| 4 | Q | 
|---|
| 5 | ; | 
|---|
| 6 | EN ;Starting point | 
|---|
| 7 | N DIR,DA,DFN,STATUS,NAME,STAMP,CNT,FIRST,SECOND,DIRUT | 
|---|
| 8 | K ^TMP("PXRMGEC_CK1",$J),DIR(0),^TMP("PXRMGEC_CK2",$J) | 
|---|
| 9 | D PAT | 
|---|
| 10 | I $D(DIRUT) Q | 
|---|
| 11 | ; | 
|---|
| 12 | DISP ;Display referrals and data | 
|---|
| 13 | N LOC,DIV,SSN,AGE | 
|---|
| 14 | S NAME=$P(^DPT(DFN,0),"^",1) | 
|---|
| 15 | S LOC=$S($D(^DPT(DFN,.1)):"INPATIENT",1:"OUTPATIENT") | 
|---|
| 16 | S DIV=$$GET1^DIQ(2,DFN,.19) I DIV="" S DIV="Unknown" | 
|---|
| 17 | S SSN=$$GET1^DIQ(2,DFN,.09) | 
|---|
| 18 | S AGE=$$GET1^DIQ(2,DFN,.033) | 
|---|
| 19 | S STATUS=$$CK1(DFN)_"^"_$$CK2(DFN) | 
|---|
| 20 | ; | 
|---|
| 21 | ; | 
|---|
| 22 | W !,"================================================================================" | 
|---|
| 23 | W !,NAME," (",SSN,") "," AGE:",AGE,"  ",LOC,"  ",DIV," Division",! | 
|---|
| 24 | W !,?5,"Current Open Referral::" | 
|---|
| 25 | I +STATUS=0 W !,?10,"< N O N E >" | 
|---|
| 26 | I +STATUS=1 D | 
|---|
| 27 | .N I,DATE,DIALOG,USER,STAMP | 
|---|
| 28 | .S I=0 F  S I=$O(^TMP("PXRMGEC_CK1",$J,I)) Q:I=""  D | 
|---|
| 29 | ..S J=0 F  S J=$O(^TMP("PXRMGEC_CK1",$J,I,J)) Q:J=""  D | 
|---|
| 30 | ...S STAMP=$P(^TMP("PXRMGEC_CK1",$J,I,J),"^",2) I STAMP'="" S STAMP=$$FMTE^XLFDT(STAMP,"1P") | 
|---|
| 31 | ...S DIALOG=$$DIALOG($P(^TMP("PXRMGEC_CK1",$J,I,J),"^",3)) | 
|---|
| 32 | ...S USER=$P(^TMP("PXRMGEC_CK1",$J,I,J),"^",5) I USER'="" S USER=$P(^VA(200,USER,0),"^",1) | 
|---|
| 33 | ...S DATE=$P(^TMP("PXRMGEC_CK1",$J,I,J),"^",6) I DATE'="" S DATE=$$FMTE^XLFDT(DATE,"1P") | 
|---|
| 34 | ...I J=1 W !,$O(^TMP("PXRMGEC_CK1",$J,0)),?10,STAMP_" (start date)" | 
|---|
| 35 | ...W !,?15,DIALOG,?35,"  by: ",USER," ",?62," On: ",DATE | 
|---|
| 36 | ; | 
|---|
| 37 | W !!,?5,"Historical Referral(s)::" | 
|---|
| 38 | I $P(STATUS,"^",2)=0 D | 
|---|
| 39 | .W !,?10,"< N O N E >" | 
|---|
| 40 | I $P(STATUS,"^",2)=1 D | 
|---|
| 41 | .N J,K,STAMP,STAMPB,DIALOG,USER,DATE,I,DAX,COUNT | 
|---|
| 42 | .S STAMPB=1,J=1,K=0,COUNT=$S($D(LOOP):5,1:0) | 
|---|
| 43 | .S I=1 F  S I=$O(^TMP("PXRMGEC_CK2",$J,I)),COUNT=COUNT+1 Q:I=""  Q:COUNT=3  D | 
|---|
| 44 | ..W ! | 
|---|
| 45 | ..S K=0 F  S K=$O(^TMP("PXRMGEC_CK2",$J,I,K)) Q:K=""  D | 
|---|
| 46 | ...S DAX=0 F  S DAX=$O(^TMP("PXRMGEC_CK2",$J,I,K,DAX)) Q:DAX=""  D | 
|---|
| 47 | ....S STAMP=$P(^TMP("PXRMGEC_CK2",$J,I,K,DAX),"^",2) | 
|---|
| 48 | ....I STAMP'=STAMPB S J=J+1,CNT=I | 
|---|
| 49 | ....S CNTA=$O(^TMP("PXRMGEC_CK2",$J,0)),CNTB=CNTA+2 | 
|---|
| 50 | ....S STAMP=$$FMTE^XLFDT(STAMP,"1P") | 
|---|
| 51 | ....S DIALOG=$$DIALOG($P(^TMP("PXRMGEC_CK2",$J,I,K,DAX),"^",3)) | 
|---|
| 52 | ....S USER=$P(^TMP("PXRMGEC_CK2",$J,I,K,DAX),"^",5) I USER'="" S USER=$P(^VA(200,USER,0),"^",1) | 
|---|
| 53 | ....S DATE=$P(^TMP("PXRMGEC_CK2",$J,I,K,DAX),"^",6) I DATE'="" S DATE=$$FMTE^XLFDT(DATE,"1P") | 
|---|
| 54 | ....I STAMP'=STAMPB W !,I,?10,STAMP_" (start date)" | 
|---|
| 55 | ....W !,?15,DIALOG," ",?35,"  by: ",USER," ",?62," On: ",DATE | 
|---|
| 56 | ....S STAMPB=STAMP | 
|---|
| 57 | ; | 
|---|
| 58 | ASK ;Ask the User what they want to do. | 
|---|
| 59 | N DIR,Y,X,MODE,ROPNNUM | 
|---|
| 60 | K DIR(0),DIR("A") | 
|---|
| 61 | I STATUS="0^1",CNT=2,'$D(LOOP) S DIR(0)="S^R:Re-open 1 Referral;V:View All Historical Referrals;P:New Patient;Q:Quit" | 
|---|
| 62 | I STATUS="0^1",CNT=2,$D(LOOP) S DIR(0)="S^R:Re-open 1 Referral;D:Display Last 2 Referrals Only;P:New Patient;Q:Quit" | 
|---|
| 63 | I STATUS="0^1",CNT>2,'$D(LOOP) S DIR(0)="S^R:Re-open 1 Referral;M:Merge 2 Referrals;V:View All Historical Referrals;P:New Patient;Q:Quit" | 
|---|
| 64 | I STATUS="0^1",CNT>2,$D(LOOP) S DIR(0)="S^R:Re-open 1 Referral;M:Merge 2 Referrals;D:Display Last 2 Referrals Only;P:New Patient;Q:Quit" | 
|---|
| 65 | I STATUS="1^1",'$D(LOOP) S DIR(0)="S^C:CLOSE Open Referral;M:Merge 2 Referrals;V:View ALL Historical Referrals;P:New Patient;Q:Quit" | 
|---|
| 66 | I STATUS="1^1",$D(LOOP) S DIR(0)="S^C:CLOSE Open Referral;M:Merge 2 Referrals;D:Display Last 2 Referrals Only;P:New Patient;Q:Quit" | 
|---|
| 67 | I STATUS="1^0"!(STATUS="0^0") S DIR(0)="S^C:CLOSE Open Referral;P:New Patient;Q:Quit" | 
|---|
| 68 | D ^DIR S MODE=Y W ! | 
|---|
| 69 | I MODE="R" D | 
|---|
| 70 | .S DIR(0)="NO^"_$O(^TMP("PXRMGEC_CK2",$J,0))_":"_CNT_":0" | 
|---|
| 71 | .S DIR("A")="Enter the number on the Left side of the screen next to the Historical Referral that you want to re-open." | 
|---|
| 72 | .D ^DIR | 
|---|
| 73 | .S ROPNNUM=Y | 
|---|
| 74 | I MODE="M" D  I $D(DIRUT) G ASK | 
|---|
| 75 | MRG .I STATUS="0^1" S DIR(0)="NO^"_CNTA_":"_$S($D(LOOP):CNT,1:CNTB)_":0" | 
|---|
| 76 | .I STATUS="1^1" S DIR(0)="NO^"_$O(^TMP("PXRMGEC_CK1",$J,0))_":"_CNT_":0" | 
|---|
| 77 | .S DIR("A")="First Referral Record" | 
|---|
| 78 | .D ^DIR Q:$D(DIRUT)  S FIRST=Y D  Q:$D(DIRUT) | 
|---|
| 79 | ..I STATUS="0^1" S DIR(0)="NO^"_CNTA_":"_$S($D(LOOP):CNT,1:CNTB)_":0" | 
|---|
| 80 | ..I STATUS="1^1" S DIR(0)="NO^"_$O(^TMP("PXRMGEC_CK1",$J,0))_":"_CNT_":0" | 
|---|
| 81 | ..S DIR("A")="Second Referral Record" | 
|---|
| 82 | ..D ^DIR Q:$D(DIRUT)  S SECOND=Y | 
|---|
| 83 | .I +FIRST>0,+SECOND>0,FIRST=SECOND W !,"Try again.." G MRG | 
|---|
| 84 | I MODE="Q" D EXIT | 
|---|
| 85 | I MODE="R" D REOPEN^PXRMGECL(ROPNNUM) G DISP | 
|---|
| 86 | I MODE="M" D MERGE(FIRST,SECOND,DFN) G DISP | 
|---|
| 87 | I MODE="V" S LOOP=1 G DISP | 
|---|
| 88 | I MODE="D" K LOOP G DISP | 
|---|
| 89 | I MODE="P" G EN | 
|---|
| 90 | I MODE="C" D FINISHED^PXRMGECU(DFN,1) G DISP | 
|---|
| 91 | Q | 
|---|
| 92 | ; | 
|---|
| 93 | MERGE(FIR,SEC,DFN) ;Merge 2 Referrals | 
|---|
| 94 | Q:FIR="" | 
|---|
| 95 | Q:SEC="" | 
|---|
| 96 | Q:DFN="" | 
|---|
| 97 | N DATE1,DATE2,OLDDT,OLD,SRCHDT | 
|---|
| 98 | W !,"DO MERGE",! | 
|---|
| 99 | ;Get Date to use for setting and to be changed. | 
|---|
| 100 | I $D(^TMP("PXRMGEC_CK1",$J,FIR,1)) S DATE(FIR)=$P($G(^TMP("PXRMGEC_CK1",$J,FIR,1)),"^",2) | 
|---|
| 101 | I $D(^TMP("PXRMGEC_CK1",$J,SEC,1)) S DATE(SEC)=$P($G(^TMP("PXRMGEC_CK1",$J,SEC,1)),"^",2) | 
|---|
| 102 | I $D(^TMP("PXRMGEC_CK2",$J,FIR)) D | 
|---|
| 103 | .N SUB3,SUBDA | 
|---|
| 104 | .S SUB3=$O(^TMP("PXRMGEC_CK2",$J,FIR,0)) | 
|---|
| 105 | .S SUBDA=$O(^TMP("PXRMGEC_CK2",$J,FIR,SUB3,0)) | 
|---|
| 106 | .S DATE(FIR)=$P($G(^TMP("PXRMGEC_CK2",$J,FIR,SUB3,SUBDA)),"^",2) | 
|---|
| 107 | I $D(^TMP("PXRMGEC_CK2",$J,SEC)) D | 
|---|
| 108 | .N SUB3,SUBDA | 
|---|
| 109 | .S SUB3=$O(^TMP("PXRMGEC_CK2",$J,SEC,0)) | 
|---|
| 110 | .S SUBDA=$O(^TMP("PXRMGEC_CK2",$J,SEC,SUB3,0)) | 
|---|
| 111 | .S DATE(SEC)=$P($G(^TMP("PXRMGEC_CK2",$J,SEC,SUB3,SUBDA)),"^",2) | 
|---|
| 112 | S OLD(DATE(FIR))=FIR | 
|---|
| 113 | S OLD(DATE(SEC))=SEC | 
|---|
| 114 | S OLDDT=$O(OLD(0)) | 
|---|
| 115 | S SRCHDT=$O(OLD(OLDDT)) | 
|---|
| 116 | ; | 
|---|
| 117 | ;List of Health Factors DA's to change | 
|---|
| 118 | N DATE,ARY,GEC,DA,VISIT,ROOT,PKG,SOURCE | 
|---|
| 119 | N HF0,HF12,HF801,HF812,ARY1 | 
|---|
| 120 | S ARY="^AUPNVHF(""AED"","_SRCHDT_","_DFN_")" | 
|---|
| 121 | S GEC="" F  S GEC=$O(@ARY@(GEC)) Q:GEC=""  D | 
|---|
| 122 | .S DA=0 F  S DA=$O(@ARY@(GEC,DA)) Q:DA=""  D | 
|---|
| 123 | ..S VISIT=$P($G(^AUPNVHF(DA,0)),"^",3) | 
|---|
| 124 | ..S ^TMP("PXRMGECMRG",$J,VISIT,DA,SRCHDT)="" | 
|---|
| 125 | ; | 
|---|
| 126 | ;Change HF with DATA2PCE | 
|---|
| 127 | S I=0 | 
|---|
| 128 | S ROOT="^TMP(""PXRMGECMRGPCE"",$J)" | 
|---|
| 129 | S SOURCE="Geriatric Extended Care Merge" | 
|---|
| 130 | ; | 
|---|
| 131 | S ARY1="^TMP(""PXRMGECMRG"",$J)" | 
|---|
| 132 | S VISIT=0 F  S VISIT=$O(@ARY1@(VISIT)) Q:VISIT=""  D | 
|---|
| 133 | .S DA=0 F  S DA=$O(@ARY1@(VISIT,DA)) Q:DA=""  D | 
|---|
| 134 | ..I $D(^AUPNVHF(DA)) D | 
|---|
| 135 | ...S HF0=$G(^AUPNVHF(DA,0)) | 
|---|
| 136 | ...S HF12=$G(^AUPNVHF(DA,12)) | 
|---|
| 137 | ...S HF812=$G(^AUPNVHF(DA,812)) | 
|---|
| 138 | ...; | 
|---|
| 139 | ...S PKG=$P(HF812,"^",2) | 
|---|
| 140 | ...S SOURCE=$P(HF812,"^",3) | 
|---|
| 141 | ...S USER=DUZ | 
|---|
| 142 | ...S @ROOT@("HEALTH FACTOR",DA,"HEALTH FACTOR")=$P(HF0,"^",1) | 
|---|
| 143 | ...S @ROOT@("HEALTH FACTOR",DA,"LEVEL/SEVERITY")=$P(HF0,"^",4) | 
|---|
| 144 | ...S @ROOT@("HEALTH FACTOR",DA,"ENC PROVIDER")=$P(HF12,"^",4) | 
|---|
| 145 | ...S @ROOT@("HEALTH FACTOR",DA,"EVENT D/T")=OLDDT | 
|---|
| 146 | .I $D(^TMP("PXRMGECMRGPCE",$J)) D | 
|---|
| 147 | ..N NOEVT | 
|---|
| 148 | ..S NOEVT="PXKNOEVT" | 
|---|
| 149 | ..S @NOEVT=1 | 
|---|
| 150 | ..S OK=$$DATA2PCE^PXAPI(ROOT,PKG,SOURCE,.VISIT,USER,"","","") | 
|---|
| 151 | ; | 
|---|
| 152 | ;Change 801.55 | 
|---|
| 153 | N GEC,DA,GECX,GECM | 
|---|
| 154 | ; | 
|---|
| 155 | S GEC="" F  S GEC=$O(^PXRMD(801.55,"AC",DFN,SRCHDT,GEC)) Q:GEC=""  D | 
|---|
| 156 | .S DA=0 F  S DA=$O(^PXRMD(801.55,"AC",DFN,SRCHDT,GEC,DA)) Q:DA=""  D | 
|---|
| 157 | ..S GECX(1,801.55,DA_",",.02)=OLDDT | 
|---|
| 158 | ..D FILE^DIE("","GECX(1)") K GECX | 
|---|
| 159 | ..; | 
|---|
| 160 | ..I FIR=$O(^TMP("PXRMGEC_CK1",$J,0)) D | 
|---|
| 161 | ...;I FIR=1!(SEC=1) D | 
|---|
| 162 | ...I '$D(^PXRMD(801.5,"AC",DFN,SRCHDT,GEC)) D | 
|---|
| 163 | ....S GECM(1,801.5,"+1,",.01)=$P($G(^PXRMD(801.55,DA,0)),"^",1) | 
|---|
| 164 | ....S GECM(1,801.5,"+1,",.02)=$P($G(^PXRMD(801.55,DA,0)),"^",2) | 
|---|
| 165 | ....S GECM(1,801.5,"+1,",.03)=$P($G(^PXRMD(801.55,DA,0)),"^",3) | 
|---|
| 166 | ....S GECM(1,801.5,"+1,",.04)=$P($G(^PXRMD(801.55,DA,0)),"^",4) | 
|---|
| 167 | ....S GECM(1,801.5,"+1,",.05)=$P($G(^PXRMD(801.55,DA,0)),"^",5) | 
|---|
| 168 | ....S GECM(1,801.5,"+1,",.06)=$P($G(^PXRMD(801.55,DA,0)),"^",6) | 
|---|
| 169 | ....D UPDATE^DIE("","GECM(1)") | 
|---|
| 170 | ; | 
|---|
| 171 | ; | 
|---|
| 172 | ;Change 801.5 | 
|---|
| 173 | N GEC,DA,GECX | 
|---|
| 174 | ; | 
|---|
| 175 | S GEC="" F  S GEC=$O(^PXRMD(801.5,"AC",DFN,SRCHDT,GEC)) Q:GEC=""  D | 
|---|
| 176 | .S DA=0 F  S DA=$O(^PXRMD(801.5,"AC",DFN,SRCHDT,GEC,DA)) Q:DA=""  D | 
|---|
| 177 | ..S GECX(1,801.5,DA_",",.02)=OLDDT | 
|---|
| 178 | ..D FILE^DIE("","GECX(1)") K GECX | 
|---|
| 179 | ;EXIT | 
|---|
| 180 | K ^TMP("PXRMGECMRG",$J) | 
|---|
| 181 | K ^TMP("PXRMGECMRGPCE",$J) | 
|---|
| 182 | Q | 
|---|
| 183 | ; | 
|---|
| 184 | ; | 
|---|
| 185 | PAT ;LOOK UP ALL PATIENTS | 
|---|
| 186 | W @IOF,! | 
|---|
| 187 | S DIR(0)="801.55,.01" | 
|---|
| 188 | D ^DIR | 
|---|
| 189 | S DFN=+Y | 
|---|
| 190 | K Y,Y(0),Y(0,0) | 
|---|
| 191 | Q | 
|---|
| 192 | ; | 
|---|
| 193 | CK1(DFN) ;Check for current open referral | 
|---|
| 194 | Q:DFN'>0 | 
|---|
| 195 | N STATUS,I,Z | 
|---|
| 196 | K ^TMP("PXRMGEC_CK1",$J) | 
|---|
| 197 | S STATUS=0,I=1,J=0 | 
|---|
| 198 | ;S Z=$$CK2(DFN) S I=$O(^TMP("PXRMGEC_CK2",$J,0))-1 | 
|---|
| 199 | I $D(^PXRMD(801.5,"B",DFN)) D | 
|---|
| 200 | .S DA=0 F  S DA=$O(^PXRMD(801.5,"B",DFN,DA)) Q:DA=""  S J=J+1 D | 
|---|
| 201 | ..S ^TMP("PXRMGEC_CK1",$J,I,J)=$G(^PXRMD(801.5,DA,0)) | 
|---|
| 202 | .S STATUS=1 | 
|---|
| 203 | Q STATUS | 
|---|
| 204 | ; | 
|---|
| 205 | CK2(DFN) ;Check for entries in History file 801.55 | 
|---|
| 206 | Q:DFN'>0 | 
|---|
| 207 | N STATUS,I,CURRENT,DATE,DIA,DA,J | 
|---|
| 208 | K ^TMP("PXRMGEC_CK2",$J) | 
|---|
| 209 | S STATUS=0,I=1000,J=0 | 
|---|
| 210 | I $D(^TMP("PXRMGEC_CK1",$J)) S CURRENT=$P($G(^TMP("PXRMGEC_CK1",$J,$O(^TMP("PXRMGEC_CK1",$J,0)),1)),"^",2) | 
|---|
| 211 | I $D(^PXRMD(801.55,"B",DFN)) D | 
|---|
| 212 | .S DATE="" F  S DATE=$O(^PXRMD(801.55,"AC",DFN,DATE)) Q:DATE=""  D | 
|---|
| 213 | ..Q:$G(CURRENT)=DATE | 
|---|
| 214 | ..S I=I-1 | 
|---|
| 215 | ..S DIA="" F  S DIA=$O(^PXRMD(801.55,"AC",DFN,DATE,DIA)) Q:DIA=""  D | 
|---|
| 216 | ...S J=J+1 | 
|---|
| 217 | ...S DA=0 F  S DA=$O(^PXRMD(801.55,"AC",DFN,DATE,DIA,DA)) Q:DA=""  D | 
|---|
| 218 | ....S ^TMP("PXRMGEC_CK2",$J,I,J,DA)=$G(^PXRMD(801.55,DA,0)) | 
|---|
| 219 | ....S STATUS=1 | 
|---|
| 220 | ;RENUMBER ARRAY | 
|---|
| 221 | I $D(^TMP("PXRMGEC_CK2",$J)) D | 
|---|
| 222 | .N OLD,NEW,J,DA,DATA | 
|---|
| 223 | .S NEW=1 | 
|---|
| 224 | .S OLD=0 F  S OLD=$O(^TMP("PXRMGEC_CK2",$J,OLD)) Q:OLD=""  D | 
|---|
| 225 | ..S NEW=NEW+1 | 
|---|
| 226 | ..S J=0 F  S J=$O(^TMP("PXRMGEC_CK2",$J,OLD,J)) Q:J=""  D | 
|---|
| 227 | ...S DA=0 F  S DA=$O(^TMP("PXRMGEC_CK2",$J,OLD,J,DA)) Q:DA=""  D | 
|---|
| 228 | ....S DATA=$G(^TMP("PXRMGEC_CK2",$J,OLD,J,DA)) | 
|---|
| 229 | ....S ^TMP("PXRMGEC_CK2",$J,NEW,J,DA)=DATA | 
|---|
| 230 | ....K ^TMP("PXRMGEC_CK2",$J,OLD,J,DA) | 
|---|
| 231 | Q STATUS | 
|---|
| 232 | ; | 
|---|
| 233 | DIALOG(DIA) ;Returns expanded name of dialog | 
|---|
| 234 | N NAME | 
|---|
| 235 | S NAME="" | 
|---|
| 236 | I DIA="GEC1" S NAME="Social Services" | 
|---|
| 237 | I DIA="GEC2" S NAME="Nursing Assessment" | 
|---|
| 238 | I DIA="GEC3" S NAME="Care Recommendation" | 
|---|
| 239 | I DIA="GECF" S NAME="Care Coordination" | 
|---|
| 240 | Q NAME | 
|---|
| 241 | ; | 
|---|
| 242 | EXIT ;CLEAN UP | 
|---|
| 243 | K CK2,LOOP,X,CNTA,CNTB,ROPNNUM | 
|---|
| 244 | K ^TMP("PXRMGEC_CK1",$J),^TMP("PXRMGEC_CK2",$J) | 
|---|
| 245 | Q | 
|---|
| 246 | ; | 
|---|