| 1 | RGEX03 ;BAY/ALS-LIST MANAGER FOR MPI/PD EXCEPTIONS ;10/13/99
 | 
|---|
| 2 |  ;;1.0;CLINICAL INFO RESOURCE NETWORK;**3,12,19,23,27,30,38,39,43,44,48**;30 Apr 99;Build 3
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Reference to START^VAFCPDAT supported by IA #3299
 | 
|---|
| 5 |  ;Reference to ^DIA(2 supported by IA #2097
 | 
|---|
| 6 |  ;Reference to ^DPT( supported by IA #2969
 | 
|---|
| 7 |  ;Reference to HINQ^DG10 supported by IA #2076
 | 
|---|
| 8 |  ;Reference to CIRNEXC^MPIFQ0 supported by IA #2942
 | 
|---|
| 9 |  ;Reference to VTQ^MPIFSAQ supported by IA #2941
 | 
|---|
| 10 |  ;Reference to NOTICE^DGSEC4 and PTSEC^DGSEC4 supported by IA#3027
 | 
|---|
| 11 |  ;Reference to POT^MPIFDUP supported by IA #4464
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 | EN(DATA) ; -- main entry point for RG EXCPT ACTION
 | 
|---|
| 14 |  D EN^VALM("RG EXCPT ACTION")
 | 
|---|
| 15 |  Q
 | 
|---|
| 16 | HDR ; -- header code
 | 
|---|
| 17 |  S VALMHDR(1)="MPI/PD EXCEPTION HANDLING ACTIONS.",VALMHDR(2)=""
 | 
|---|
| 18 |  Q
 | 
|---|
| 19 | INIT ; -- init variables and list array
 | 
|---|
| 20 |  K ^TMP("RGEXC2",$J)
 | 
|---|
| 21 |  K @VALMAR
 | 
|---|
| 22 |  I DATA="" Q
 | 
|---|
| 23 |  S STR="",LIN=1,STATUS="",NAME="",DOB="",SSN="",DFN="",CHKSM="" ;**44
 | 
|---|
| 24 |  S NAME=$P(DATA,"^",1),DOB=$P(DATA,"^",8),SSN=$P(DATA,"^",2)
 | 
|---|
| 25 |  S DFN=$P(DATA,"^",5),CHKSM=$P($G(^DPT(DFN,"MPI")),"^",2) ;**44
 | 
|---|
| 26 |  S STR=$$SETSTR^VALM1("Name:",STR,6,6),STR=$$SETSTR^VALM1(NAME,STR,14,30) D ADDTMP
 | 
|---|
| 27 |  S STR=$$SETSTR^VALM1(" SSN:",STR,6,6),STR=$$SETSTR^VALM1(SSN,STR,14,12) D ADDTMP
 | 
|---|
| 28 |  S STR=$$SETSTR^VALM1(" DOB:",STR,6,6),STR=$$SETSTR^VALM1(DOB,STR,14,20) D ADDTMP
 | 
|---|
| 29 |  S STR=$$SETSTR^VALM1(" DFN:",STR,6,6),STR=$$SETSTR^VALM1(DFN,STR,14,12) D ADDTMP ;**44
 | 
|---|
| 30 |  S STR=$$SETSTR^VALM1(" ICN:",STR,6,6),ICN="" S ICN=$P(DATA,"^",6) I ICN<0 S ICN=""
 | 
|---|
| 31 |  S STR=$$SETSTR^VALM1(ICN_($S(CHKSM="":"",1:"V"_CHKSM)),STR,14,20) D ADDTMP ;**44
 | 
|---|
| 32 |  S STR=$$SETSTR^VALM1("Date of Death:",STR,6,20),STR=$$SETSTR^VALM1($P(DATA,"^",13),STR,26,20) D ADDTMP
 | 
|---|
| 33 |  S STR=$$SETSTR^VALM1("Exception Type:",STR,6,20),STR=$$SETSTR^VALM1($P(DATA,"^",4),STR,26,50) D ADDTMP
 | 
|---|
| 34 |  S STR=$$SETSTR^VALM1("Exception Date:",STR,6,20),STR=$$SETSTR^VALM1($P(DATA,"^",3),STR,26,30) D ADDTMP
 | 
|---|
| 35 |  S STATUS=$P(DATA,"^",9)
 | 
|---|
| 36 |  I STATUS<1 S STATUS="NOT PROCESSED"
 | 
|---|
| 37 |  E  S STATUS="PROCESSED"
 | 
|---|
| 38 |  S STR=$$SETSTR^VALM1("Exception Status:",STR,6,20),STR=$$SETSTR^VALM1(STATUS,STR,26,15) D ADDTMP
 | 
|---|
| 39 |  ;Added Exception Text to Exception Handler, patch 39
 | 
|---|
| 40 |  N IEN,IEN2,X K ^UTILITY($J,"W") S IEN=$P(DATA,"^",10),IEN2=$P(DATA,"^",11)
 | 
|---|
| 41 |  I IEN'=""!(IEN2'="") D
 | 
|---|
| 42 |  .S EXCTEXT=$P($G(^RGHL7(991.1,IEN,1,IEN2,10)),"^",1) Q:EXCTEXT=""
 | 
|---|
| 43 |  .S STR=$$SETSTR^VALM1("Exception Text:",STR,6,20)
 | 
|---|
| 44 |  .S X=EXCTEXT,DIWL=1,DIWR=50,DIWF="|" D ^DIWP
 | 
|---|
| 45 |  .F N=1:1:$P($G(^UTILITY($J,"W",1)),1) D  Q:'N
 | 
|---|
| 46 |  ..S STR=$$SETSTR^VALM1(^UTILITY($J,"W",1,(N),0),STR,26,76)
 | 
|---|
| 47 |  ..D ADDTMP
 | 
|---|
| 48 | ADDNOTE ;Display Exception Notes, Word Processing field
 | 
|---|
| 49 |  S STR=$$SETSTR^VALM1("Exception Notes:",STR,6,20) D ADDTMP
 | 
|---|
| 50 |  N IEN,IEN2,IENS,N,NOTE
 | 
|---|
| 51 |  S IEN=$P(DATA,"^",10),IEN2=$P(DATA,"^",11),IENS=IEN2_","_IEN_",",N=$$GET1^DIQ(991.12,IENS,11,"","NT")
 | 
|---|
| 52 |  S L=0 F  S L=$O(NT(L)) Q:'L  S NOTE=NT(L),STR=$$SETSTR^VALM1(NOTE,STR,6,74) D ADDTMP
 | 
|---|
| 53 |  S VALMCNT=LIN-1,DFN=$P(DATA,"^",5),VAFCDFN=DFN
 | 
|---|
| 54 |  K L,NT
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 | ADDTMP ;
 | 
|---|
| 57 |  S ^TMP("RGEXC2",$J,LIN,0)=STR,^TMP("RGEXC2",$J,"IDX",LIN,LIN)="",LIN=LIN+1,STR=""
 | 
|---|
| 58 |  Q
 | 
|---|
| 59 | UPD ;
 | 
|---|
| 60 |  N PROCDT,%,X,%I,%H
 | 
|---|
| 61 |  W !,"This option updates the exception status to PROCESSED.",!,"After it is processed it will not be listed in the summary."
 | 
|---|
| 62 |  S DIR("A")="Are you sure you want to change the status? ",DIR(0)="YA",DIR("B")="YES"
 | 
|---|
| 63 |  D ^DIR Q:$D(DIRUT)  I Y>0 D
 | 
|---|
| 64 |  .;**48 populating the date/time marked as processed and who marked it as processed
 | 
|---|
| 65 |  .D NOW^%DTC S PROCDT=%
 | 
|---|
| 66 |  .S IEN="",IEN2="",IEN=$P(DATA,"^",10),IEN2=$P(DATA,"^",11) L +^RGHL7(991.1,IEN):10
 | 
|---|
| 67 |  .S DA(1)=IEN,DA=IEN2,DR="6///"_1_";7///"_PROCDT_";8///"_$G(DUZ),DIE="^RGHL7(991.1,"_DA(1)_",1," D ^DIE K DIE,DA,DR
 | 
|---|
| 68 |  .L -^RGHL7(991.1,IEN) S $P(DATA,"^",9)=1
 | 
|---|
| 69 |  .D INIT
 | 
|---|
| 70 |  K DIR,DIRUT S VALMBCK="R"
 | 
|---|
| 71 |  Q
 | 
|---|
| 72 | PA ;Patient Audit
 | 
|---|
| 73 |  S PDFN=DFN
 | 
|---|
| 74 |  I '$O(^DIA(2,"B",VAFCDFN,0)) S VALMSG="This patient has no audit data available.",VALMBCK="" G PAQ
 | 
|---|
| 75 |  N IEN S DFN=VAFCDFN,QFLG=1 D FULL^VALM1 D:$T(ASK2^RGMTAUD)]"" ASK2^RGMTAUD S VALMBCK="R"
 | 
|---|
| 76 |  S DFN=PDFN K QFLG,PDFN
 | 
|---|
| 77 | PAQ Q
 | 
|---|
| 78 | HI ;Hinq Inquiry
 | 
|---|
| 79 |  S VALMBCK="" D HINQ^DG10 D PAUSE^VALM1 S VALMBCK="R"
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 | DISP ; Display Only Query
 | 
|---|
| 82 |  S VALMBCK="" D FULL^VALM1
 | 
|---|
| 83 |  S MPIVAR("DFN")=DFN,MPIVAR("SSN")=SSN,MPIVAR("NM")=NAME,MPIVAR("DOB")=$P($P(DATA,"^",7),".",1)
 | 
|---|
| 84 |  D VTQ^MPIFSAQ(.MPIVAR) D PAUSE^VALM1
 | 
|---|
| 85 |  S VALMBCK="R" K MPIVAR
 | 
|---|
| 86 |  Q
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 | POT ;Potential Match on MPI, Query MPI, resolve duplicate if needed. **43 Added this entry point
 | 
|---|
| 89 |  D POT^MPIFDUP
 | 
|---|
| 90 |  D INIT S VALMBCK="R" K PROCESS
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 | REJ ;Primary View Reject. **44 Added entry point
 | 
|---|
| 94 |  D REJ^RGPVREJ
 | 
|---|
| 95 |  D INIT S VALMBCK="R"
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 | MPIPV ;MPI Primary View PDAT. **48 Added entry point
 | 
|---|
| 99 |  S SAPV=0 ;from EH, not stand alone option
 | 
|---|
| 100 |  D SEND^RGPVMPI
 | 
|---|
| 101 |  D INIT S VALMBCK="R"
 | 
|---|
| 102 |  Q
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 | LOAD ; Edit Patient Data, if patient's eligibility is verified - check for DG ELIGIBILITY key for user
 | 
|---|
| 105 |  S VALMBCK="",DATAOLD=""
 | 
|---|
| 106 |  D FULL^VALM1 D ELIG^VADPT
 | 
|---|
| 107 |  I $P(VAEL(8),"^",1)="V" D
 | 
|---|
| 108 |  .I '$D(^XUSEC("DG ELIGIBILITY",DUZ)) D
 | 
|---|
| 109 |  ..W !!,"Eligibility has been verified for this patient.",!!,"You do not have access to edit the Name, Date of ",!,"Birth or Social Security Number for this patient."
 | 
|---|
| 110 |  ..D PAUSE^VALM1 S VALMBCK="R"
 | 
|---|
| 111 |  .E  D SENS
 | 
|---|
| 112 |  E  D SENS
 | 
|---|
| 113 |  Q
 | 
|---|
| 114 | SENS ; check for patient sensitivity and user security
 | 
|---|
| 115 |  N RESULT,RGSEN
 | 
|---|
| 116 |  D PTSEC^DGSEC4(.RESULT,DFN,0,"RG EXCEPTION HANDLING^MPI/PD Exception Handling")
 | 
|---|
| 117 |  I RESULT(1)=-1 W !!,"Access denied: Required parameters not defined" D PAUSE^VALM1 S VALMBCK="R" Q
 | 
|---|
| 118 |  I RESULT(1)>0 W !!?15,"***PATIENT MARKED SENSITIVE***"
 | 
|---|
| 119 |  I RESULT(1)=3 W !!?15,"Access not allowed on your own PATIENT (#2) file entry" D PAUSE^VALM1 S VALMBCK="R" Q
 | 
|---|
| 120 |  I RESULT(1)=4 W !!?15,"Access denied: Your SSN is not defined" D PAUSE^VALM1 S VALMBCK="R" Q
 | 
|---|
| 121 |  I RESULT(1)<3 D
 | 
|---|
| 122 |  .I RESULT(1)=1 D NOTICE^DGSEC4(.RGSEN,DFN,"RG EXCEPTION HANDLING^MPI/PD Exception Handling",2)
 | 
|---|
| 123 |  .I RESULT(1)=2 D NOTICE^DGSEC4(.RGSEN,DFN,"RG EXCEPTION HANDLING^MPI/PD Exception Handling",3)
 | 
|---|
| 124 |  D EDIT
 | 
|---|
| 125 |  Q
 | 
|---|
| 126 | EDIT ; edit patient data
 | 
|---|
| 127 |  S ACCESS=0
 | 
|---|
| 128 |  D REC
 | 
|---|
| 129 |  Q:ACCESS=0
 | 
|---|
| 130 |  S DIE="^DPT(",DA=DFN,DR=".01///^S X=$$NCEDIT^DPTNAME(DA);.03//^S X=DOB;.09//^S X=SSN"
 | 
|---|
| 131 |  L +^DPT(DFN):10 D ^DIE K DIE,DA,DR L -^DPT(DFN)
 | 
|---|
| 132 |  S DATAOLD=DATA
 | 
|---|
| 133 |  D DEATH
 | 
|---|
| 134 |  D DEM^VADPT
 | 
|---|
| 135 |  S DATA=VADM(1)_"^"_$P($G(VADM(2)),"^",1)_"^"_$P(DATAOLD,"^",3)_"^"_$P(DATAOLD,"^",4)_"^"_DFN_"^"_$P(DATAOLD,"^",6)_"^"
 | 
|---|
| 136 |  S DATA=DATA_$G(VADM(3))_"^"_$P(DATAOLD,"^",9)_"^"_$P(DATAOLD,"^",10)_"^"_$P(DATAOLD,"^",11)_"^"_$P(DATAOLD,"^",12)_"^"_$P($G(VADM(6)),"^",2)
 | 
|---|
| 137 |  D INIT
 | 
|---|
| 138 |  S VALMBCK="R"
 | 
|---|
| 139 |  K DGNEW,DATAOLD,VAEL,ACCESS,DGNPSSN
 | 
|---|
| 140 | QUIT Q
 | 
|---|
| 141 | REC ; Check if user is attempting to access own record
 | 
|---|
| 142 |  ; check for security key
 | 
|---|
| 143 |  I $D(^XUSEC("DG RECORD ACCESS",+DUZ)) S ACCESS=1 Q
 | 
|---|
| 144 |  S DGNPSSN=$$GET1^DIQ(200,+DUZ_",",9,"I","","DGNPERR")
 | 
|---|
| 145 |  I 'DGNPSSN D  Q
 | 
|---|
| 146 |  .W !!,"Your SSN is missing from the NEW PERSON file.",!,"Contact your ADP Coordinator."
 | 
|---|
| 147 |  .D PAUSE^VALM1 S VALMBCK="R"
 | 
|---|
| 148 |  I DGNPSSN=SSN D  Q
 | 
|---|
| 149 |  .W !!,"Security regulations prohibit computer access to your",!,"own medical record."
 | 
|---|
| 150 |  .D PAUSE^VALM1 S VALMBCK="R"
 | 
|---|
| 151 |  E  S ACCESS=1
 | 
|---|
| 152 |  Q
 | 
|---|
| 153 | DEATH ; Check for access to edit date of death
 | 
|---|
| 154 |  I $D(^XUSEC("DG DETAIL",+DUZ)) D
 | 
|---|
| 155 |  .K VADM,DIE,DA,DR
 | 
|---|
| 156 |  .S DOD=""
 | 
|---|
| 157 |  .D DEM^VADPT
 | 
|---|
| 158 |  .S DOD=$P($G(VADM(6)),"^",2)
 | 
|---|
| 159 |  .S DIE="^DPT(",DA=DFN,DR=".351//^S X=DOD"
 | 
|---|
| 160 |  .L +^DPT(DFN):10
 | 
|---|
| 161 |  .D ^DIE
 | 
|---|
| 162 |  .L -^DPT(DFN)
 | 
|---|
| 163 |  E  W !!,"You do not have the proper security to edit date of death." D PAUSE^VALM1 D INIT S VALMBCK="R"
 | 
|---|
| 164 |  K VADM,DIE,DA,DR,DOD
 | 
|---|
| 165 |  Q
 | 
|---|
| 166 | INQ ; Patient Inquiry
 | 
|---|
| 167 |  S VALMBCK=""
 | 
|---|
| 168 |  D FULL^VALM1 D EN^DGRPD D PAUSE^VALM1 D CLEAN^VALM10 D INIT
 | 
|---|
| 169 |  S VALMBCK="R"
 | 
|---|
| 170 |  Q
 | 
|---|
| 171 | EDTNOT ; Edit Exception Notes
 | 
|---|
| 172 |  S IEN=$P(DATA,"^",10),IEN2=$P(DATA,"^",11)
 | 
|---|
| 173 |  L +^RGHL7(991.1,IEN):10 S DIE="^RGHL7(991.1,"_IEN_",1,",DA(1)=IEN,DA=IEN2,DR="11" D ^DIE L -^RGHL7(991.1,IEN)
 | 
|---|
| 174 |  K DIE,DA,DR,IEN,IEN2
 | 
|---|
| 175 |  D INIT
 | 
|---|
| 176 |  S VALMBCK="R"
 | 
|---|
| 177 |  Q
 | 
|---|
| 178 | PDAT S VALMBCK="",PICN="",PSSN=""
 | 
|---|
| 179 |  I $D(SSN) S PSSN=SSN
 | 
|---|
| 180 |  S ARRAY="^TMP(""RGXHFS"","_$J_")",TYPE="I",REP=1,RGXDIR=$$GET^XPAR("SYS","RGX HFS SCRATCH"),RGXFILE="RGX"_DUZ_".DAT"
 | 
|---|
| 181 |  S IOM=132,IOSL=99999,IOST="P-DUMMY",IOF=""""""
 | 
|---|
| 182 |  D OPEN^%ZISH("RGX",RGXDIR,RGXFILE,"W") Q:POP
 | 
|---|
| 183 |  U IO
 | 
|---|
| 184 |  I ICN'="" S PICN=ICN D START^VAFCPDAT
 | 
|---|
| 185 |  N RGXDEL
 | 
|---|
| 186 |  D CLOSE^%ZISH("RGX")
 | 
|---|
| 187 |  K ^TMP("RGPDAT",$J)
 | 
|---|
| 188 |  S RGXDEL(RGXFILE)="",X=$$FTG^%ZISH(RGXDIR,RGXFILE,$NAME(^TMP("RGPDAT",$J,1)),3),X=$$DEL^%ZISH(RGXDIR,$NA(RGXDEL))
 | 
|---|
| 189 |  I $D(^TMP("RGPDAT",$J)) D EN^RGEX04
 | 
|---|
| 190 |  S ICN=PICN,SSN=PSSN
 | 
|---|
| 191 |  D INIT
 | 
|---|
| 192 |  S VALMBCK="R" K PICN,PSSN,ARRAY,REP,RGXDIR,RGXFILE,TYPE
 | 
|---|
| 193 |  Q
 | 
|---|
| 194 | GETEX(RETURN,DFN) ; Get array of pending exceptions for a patient
 | 
|---|
| 195 |  K RETURN
 | 
|---|
| 196 |  S CNT=0,RETURN(0)="0^No Pending Exceptions",TYP=""
 | 
|---|
| 197 |  I 'DFN S RETURN(0)="-1^DFN not passed" G QGET
 | 
|---|
| 198 |  F  S TYP=$O(^RGHL7(991.1,"ADFN",TYP)) Q:'TYP  D
 | 
|---|
| 199 |  .I $D(^RGHL7(991.1,"ADFN",TYP,DFN)) D
 | 
|---|
| 200 |  ..S IEN="" F  S IEN=$O(^RGHL7(991.1,"ADFN",TYP,DFN,IEN)) Q:'IEN  D
 | 
|---|
| 201 |  ...S IEN2="",ETYP="" F  S IEN2=$O(^RGHL7(991.1,"ADFN",TYP,DFN,IEN,IEN2)) Q:'IEN2  D
 | 
|---|
| 202 |  ....I $P(^RGHL7(991.1,IEN,1,IEN2,0),"^",5)<1 D
 | 
|---|
| 203 |  .....S CNT=CNT+1,ETYP=$P(^RGHL7(991.11,TYP,10),"^",1)
 | 
|---|
| 204 |  .....S RETURN(CNT)=ETYP_"^"_IEN_"^"_IEN2
 | 
|---|
| 205 |  I CNT>0 S RETURN(0)=CNT_"^Pending Exception(s)"
 | 
|---|
| 206 | QGET ;
 | 
|---|
| 207 |  K TYP,ETYP,IEN,IEN2,CNT
 | 
|---|
| 208 |  Q
 | 
|---|
| 209 | HELP ; -- help code
 | 
|---|
| 210 |  S X="?" D DISP^XQORM1 W !!
 | 
|---|
| 211 |  Q
 | 
|---|
| 212 | EXIT ; -- exit code
 | 
|---|
| 213 |  S VALMBCK="" K ^TMP("RGEXC2",$J),CHKSM,DFN,DIR,EXCTEXT,IEN,IEN2,NAME,DOB,SSN,LIN,STATUS,STR,VAFCDFN,X,Y
 | 
|---|
| 214 |  S VALMBCK="R",RGBG=1
 | 
|---|
| 215 |  Q
 | 
|---|
| 216 | EXPND ; -- expand code
 | 
|---|
| 217 |  Q
 | 
|---|