ANRVOA ; HOIFO/CED - User, Patient and Parameter specifics for Patient Review. ; [01-07-2003 12:19]
 ;;4.0;VISUAL IMPAIRMENT SERVICE TEAM;**5**;AUG 21, 2003
ADD(X) ; [Procedure] Adds to RESULTS
 
@RESULTS@(+$O(@RESULTS@(""),-1)+1)=X
 
Q
 
;
DELLST ; [Procedure] Delete list of parameters
 
NDEL^XPAR(ENT,PAR,.ERR)
 
S:'$G(ERR) @RESULTS@(0)="1^All Instances Removed"
 
Q
 
;
DELPAR ; [Procedure] Delete single parameter value
 
DEL^XPAR(ENT,PAR,INST,.ERR)
 
S:'$G(ERR) @RESULTS@(0)="1^Instance Deleted"
 
Q
 
;
ELECSIG ; [Procedure] Check Electronic Signature
 
X
 
X=DATA
 
X1=$S($D(DUZ)[0:"",$D(^VA(200,DUZ,20))[0:"",1:$P(^(20),U,4))
 
X1="" @RESULTS@(0)="-1^Electronic Signature Not Found." Q
 D 
HASH^XUSHSHP
 
X1'=@RESULTS@(0)="0^Electronic Signature Incorrect." Q
 S 
@RESULTS@(0)="1^Electronic Signature Verified."
 
Q
 
;
ENTVAL ; [Procedure] Return value of the entity
 
ENT="SYS" ENT=$$KSP^XUPARAM("WHERE")
 
E  I ENT="DIV" ENT=$$GET1^DIQ(4,DUZ(2)_",",.01)
 
E  I ENT="USR" ENT=$$GET1^DIQ(200,DUZ_",",.01)
 
E  S ENT=$$GET1^DIQ(+$P(ENT,"(",2),+ENT_",",.01)
 
@RESULTS@(0)=ENT
 
Q
 
;
FULLSSN(LST,ID) ; [Procedure] Return a list of patients matching Full SSN entered
 
I,IEN
 
(I,IEN)=0
 
F  S IEN=$O(^DPT("SSN",ID,IEN)) Q:'IEN  D
 
I=I+1,LST(I)=IEN_U_$P(^DPT(IEN,0),U)_U_$$DOB^DPTLK1(IEN,2)_U_$$SSN^DPTLK1(IEN)  ; DG249
 
Q
 
;
GETHDR ; [Procedure] Returns common header format
 
X=$$FIND1^DIC(8989.51,,"QX",PAR)
 
@RESULTS@(0)=X_";8989.51^"_PAR
 
E  S @RESULTS@(0)="-1^No such parameter ["_PAR_"]"
 
Q
 
;
GETLST ; [Procedure] Return all instances of a parameter
 
GETLST^XPAR(.RET,ENT,PAR,"E",.ERR)
 
Q:$G(ERR,0)
 
TMP="RET"
 
F  S TMP=$Q(@TMPQ:TMP=""  D
 
.@RESULTS@($O(@RESULTS@(""),-1)+1)=@TMP
 
@RESULTS@(0)=$O(@RESULTS@(""),-1)
 
Q
 
;
GETPAR ; [Procedure] Returns external value for a parameter
 
@RESULTS@(0)=$$GET^XPAR(ENT,PAR,INST,"E")
 
Q
 
;
GETWP ; [Procedure] Returns WP text for a parameter
 
GETWP^XPAR(.RET,ENT,PAR,INST,.ERR)
 
Q:$G(ERR,0)
 
TMP="RET"
 
F  S TMP=$Q(@TMPQ:TMP=""  D
 
.@RESULTS@($O(@RESULTS@(""),-1)+1)=@TMP
 
@RESULTS@(0)=$O(@RESULTS@(""),-1)_U_INST
 
Q
 
;
LAST5(RESULTS,PTID) ; [Procedure] Get patients using last 5
 
I,IEN,XREF
 
(I,IEN)=0,XREF=$S($L(PTID)=5:"BS5",1:"BS")
 
F  S IEN=$O(^DPT(XREF,PTID,IEN)) Q:'IEN  D
 
.I=I+1,RESULTS(I)=IEN_U_$P(^DPT(IEN,0),U)_U_$$DOB^DPTLK1(IEN,2)_U_$$SSN^DPTLK1(IEN)  ; DG249
 
Q
 
;
LISTALL(RESULTS,FROM,DIR) ; [Procedure] Pt List
 
I,IEN,CNT CNT=44,I=0
 
F  S FROM=$O(^DPT("B",FROM),DIRQ:FROM=""  D  Q:I=CNT
 
.IEN=0 F  S IEN=$O(^DPT("B",FROM,IEN)) Q:'IEN  D  Q:I=CNT
 
..I=I+1 RESULTS(I)=IEN_"^"_FROM
 
Q
 
;
LOGSEC ; [Procedure] Logs secure and restricted record access
 
NOTICE^DGSEC4(.ANRVRET,DFN,DATA,1)
 
@RESULTS@(0)=$S(ANRVRET:"1^Logged",1:"-1^Unable to log")
 
Q
 
;
PINF(RESULTS,PTDFN) ; [Procedure] Patient Information for verification
 
Y,GX,GE,NC,Z,X,I
 
GETS^DIQ(2,+PTDFN,".03;391;1901;.01;.02;.09;.301;.14;","","GX","GE")
 
I $D(GE("DIERR",1)) RESULTS="0^"_GE("DIERR",1,"TEXT",1)  Q
 S 
NC=+PTDFN_",",Z="1^"
 
I=.03,391,1901,.01,.02,.09,.301,.14 D
 
.X=GX(2,NC,IZ=Z_X_"^"
 
RESULTS=Z
 
Q
 
;
RPC(RESULTS,OPTION,DFN,DATA) ; [Procedure] Main RPC Call Tag
 
RESULTS=$NA(^TMP($J)) @RESULTS
 
D:$T(@OPTION)]"" @OPTION
 
D:'$D(@RESULTS)
 .
@RESULTS@(0)="-1^No results returned"
 
CLEAN^DILF
 
Q
 
;
RPCA(RESULTS,OPTION,ENT,PAR,INST,VAL) ; [Procedure] Main RPC entry
 
ERR,TMP,RET,TXT,IEN,IENS,ROOT
 
INST=$G(INST,1)
 
PAR=$G(PAR,"ANRV")
 
RESULTS=$NA(^TMP($J)) @RESULTS
 
PAR'?1"ANRV".^TMP($J,0)="-1^Non VIST Outcomes Parameter" Q
 D
:$T(@OPTION)]"" @OPTION
 
+$G(ERR@RESULTS @RESULTS@(0)="-1^Error: "_(+ERR)_" "_$P(ERR,U,2)
 
'$D(^TMP($J)) @RESULTS@(0)="-1^No data returned"
 
CLEAN^DILF
 
Q
 
;
SELECT ; [Procedure] Select Patient
 
NEW IENS,ANRVDFN,ANRVFLD,ANRVID,ANRVRET,ANRVX
 
'$D(^DPT(+$G(DFN),0))#2 @RESULTS@(0)="-1^No such patient" Q
 S 
@RESULTS@(0)="1^Required Identifiers & messages"
 
IENS=DFN_","
 
FILE^DID(2,,"REQUIRED IDENTIFIERS","ANRVIDS")
 
ANRVX=0:0 ANRVX=$O(ANRVIDS("REQUIRED IDENTIFIERS",ANRVX)) Q:'ANRVX  D
 
.ANRVFLD=ANRVIDS("REQUIRED IDENTIFIERS",ANRVX,"FIELD")
 .
ANRVID="$$PTID^"_$$GET1^DID(2,ANRVFLD,"","LABEL")
 .
ANRVID=ANRVID_U_$$GET1^DIQ(2,IENS,ANRVFLD)
 .
D:ANRVFLD=.03
 ..
ANRVID=ANRVID_" ("_$$GET1^DIQ(2,IENS,.033)_")"
 
..ANRVID=ANRVID_U_$$DOB^DPTLK1(+IENS)
 .
D:ANRVFLD=.09
 ..
X=$P(ANRVID,U,3),X=$E(X,1,3)_"-"_$E(X,4,5)_"-"_$E(X,6,10)
 ..
S $P(ANRVID,U,3)=X,$P(ANRVID,U,4)=$$SSN^DPTLK1(+IENS)
 .
@RESULTS@($O(@RESULTS@(""),-1)+1)=ANRVID
 
ANRVRET
 
GUIBS5A^DPTLK6(.ANRVRET,DFND:ANRVRET(1)=1
 .
ADD("$$MSGHDR^2^SAME LAST NAME AND LAST 4")
 .
ANRVX=1
 .
F  S ANRVX=$O(ANRVRET(ANRVX)) Q:'ANRVX!(+$G(ANRVRET(ANRVX)))  D
 
..ADD($P(ANRVRET(ANRVX),U,2))
 .
ADD(" ")
 .
ANRVX=1
 .
F  S ANRVX=$O(ANRVRET(ANRVX)) Q:'ANRVX  D:+ANRVRET(ANRVX)
 ..
ANRVDFN=+$P(ANRVRET(ANRVX),U,2)
 ..
ADD($$GET1^DIQ(2,ANRVDFN_",",.01)_"    "_$$DOB^DPTLK1(ANRVDFN)_"    "_$$SSN^DPTLK1(ANRVDFN))
 .
ADD(" ")
 .
ADD("Please review carefully before continuing")
 .
ADD("$$MSGEND")
 
ANRVRET
 
PTSEC^DGSEC4(.ANRVRET,DFND:ANRVRET(1)'=0
 .
D:ANRVRET(1)=3
 ..
ADD("$$MSGHDR^0^CAN'T ACCESS YOUR OWN RECORD!!")
 .
D:ANRVRET(1)=-1
 ..
ADD("$$MSGHDR^0^INCOMPLETE INFORMATION - CAN'T PROCEED")
 .
D:ANRVRET(1)=1
 ..
ADD("$$MSGHDR^1^SENSITIVE RECORD ACCESS")
 .
D:ANRVRET(1)'=-1&(ANRVRET(1)'=3)&(ANRVRET(1)'=1)
 ..
ADD("$$MSGHDR^3^SENSITIVE RECORD ACCESS")
 .
ANRVX=1
 .
F  S ANRVX=$O(ANRVRET(ANRVX)) Q:'ANRVX  ADD($TR(ANRVRET(ANRVX),"*"," "))
 .
ADD("$$MSGEND")
 
GUIMTD^DPTLK6(.ANRVRET,DFND:ANRVRET(1)=1
 .
ADD("$$MSGHDR^1^NOTICE")
 .
ANRVX=1:0 ANRVX=$O(ANRVRET(ANRVX)) Q:'ANRVX  ADD(ANRVRET(ANRVX))
 .
ADD("$$MSGEND")
 
Q
 
;
SETLST ; [Procedure] Set single value into a parameter
 
ANRVINS ; Instance Counter
 
DELLST(ENT,PAR)
 
ANRVINS=""
 
F  S ANRVINS=$O(VAL(ANRVINS)) Q:ANRVINS=""  D
 
.EN^XPAR(ENT,PAR,ANRVINS,VAL(ANRVINS),.ERR)
 
S:'$G(ERR) @RESULTS@(0)="1^List "_PAR_" rebuilt"
 
Q
 
;
SETPAR ; [Procedure] Set single value into a parameter   
 
EN^XPAR(ENT,PAR,INST,VAL,.ERR)
 
S:'$G(ERR) @RESULTS@(0)="1^Parameter updated"
 
Q
 
;
SETWP ; [Procedure] Set WP text into a parameter
 
TXT=INST,TMP=""
 
F  S TMP=$O(VAL(TMP)) Q:TMP=""  D
 
.TXT($O(TXT(""),-1)+1,0)=VAL(TMP)
 
EN^XPAR(ENT,PAR,INST,.TXT,.ERR)
 
S:'$G(ERR) @RESULTS@(0)="1^WP Text Saved"
 
Q
 
;
SIGNON ; [Procedure] Return signon information for user.
 
@RESULTS@(0)=DUZ
 
@RESULTS@(1)=$$GET1^DIQ(200,DUZ_",",.01) ; Name
 
@RESULTS@(2)=+$$FIND1^DIC(4.2,"","QX",$$KSP^XUPARAM("WHERE")) ;Domain
 
@RESULTS@(3)=$$KSP^XUPARAM("WHERE"; Domain Name
 
@RESULTS@(4)=+$G(DUZ(2)) ; Division IEN
 
@RESULTS@(5)=$S(+$G(DUZ(2)):$$GET1^DIQ(4,DUZ(2)_",",.01),1:"UNKNOWN")
 
@RESULTS@(6)=$$GET1^DIQ(200,DUZ_",",8)
 
@RESULTS@(7)=""
 
@RESULTS@(8)=$G(DTIME,300)
 
Q
 
;