1 | MAGJLS4 ;WIRMFO/JHC VistARad RPCs--History List ; 29 Jul 2003 10:00 AM
|
---|
2 | ;;3.0;IMAGING;**18,76**;Jun 22, 2007;Build 19
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;; +---------------------------------------------------------------+
|
---|
5 | ;; | Property of the US Government. |
|
---|
6 | ;; | No permission to copy or redistribute this software is given. |
|
---|
7 | ;; | Use of unreleased versions of this software requires the user |
|
---|
8 | ;; | to execute a written test agreement with the VistA Imaging |
|
---|
9 | ;; | Development Office of the Department of Veterans Affairs, |
|
---|
10 | ;; | telephone (301) 734-0100. |
|
---|
11 | ;; | |
|
---|
12 | ;; | The Food and Drug Administration classifies this software as |
|
---|
13 | ;; | a medical device. As such, it may not be changed in any way. |
|
---|
14 | ;; | Modifications to this software may result in an adulterated |
|
---|
15 | ;; | medical device under 21CFR820, the use of which is considered |
|
---|
16 | ;; | to be a violation of US Federal Statutes. |
|
---|
17 | ;; +---------------------------------------------------------------+
|
---|
18 | ;;
|
---|
19 | Q
|
---|
20 | ERR N ERR S ERR=$$EC^%ZOSV S ^TMP($J,"RET",0)="0^4~"_ERR
|
---|
21 | S MAGGRY=$NA(^TMP($J,"RET"))
|
---|
22 | D @^%ZOSF("ERRTN")
|
---|
23 | Q:$Q 1 Q
|
---|
24 | ;
|
---|
25 | ; Subroutines for Vistarad History List functions
|
---|
26 | ; Entry Points:
|
---|
27 | ; HIST -- All History List rpcs go here
|
---|
28 | ;
|
---|
29 | HIST(MAGGRY,PARAMS,DATA) ; History List RPC: MAGJ HISTORYLIST
|
---|
30 | ; PARAMS--TXID ^ TXDUZ ^ TXDIV
|
---|
31 | ; TXID: Required; designates action to take; see below
|
---|
32 | ; TXDUZ: Optional; if supplied, get data for another user (Read Only)
|
---|
33 | ; TXDIV: Optional; if supplied, get data for another division (Read Only)
|
---|
34 | ; Note: for now, TXDIV is forced to the Logon Division
|
---|
35 | ; DATA--(optional) array of input data; depends on TXID; see subroutines by TXID
|
---|
36 | ;
|
---|
37 | N $ETRAP,$ESTACK S $ETRAP="D ERR^MAGJLS4"
|
---|
38 | N TXID,TXDUZ,TXDIV,UPDATEOK,DIQUIET,REPLY
|
---|
39 | K ^TMP($J,"RET")
|
---|
40 | S TXID=+PARAMS,TXDUZ=+$P(PARAMS,U,2),TXDIV=+$P(PARAMS,U,3)
|
---|
41 | I 'TXDUZ S TXDUZ=DUZ
|
---|
42 | S UPDATEOK=TXDUZ=DUZ
|
---|
43 | S TXDIV=DUZ(2) ; Force to Logon Division for now
|
---|
44 | S REPLY="0^1~Performing History List operation."
|
---|
45 | I 'TXID!'("1,2,3"[TXID) S REPLY="0^4~Invalid History List operation requested." G HISTZ
|
---|
46 | I '$D(DATA)&(TXID=1!TXID=3) S REPLY="0^4~No data supplied for History List update/delete." G HISTZ
|
---|
47 | I 'UPDATEOK&("1,3"[TXID) S REPLY="0^4~The current History List may not be updated by the current user." G HISTZ
|
---|
48 | S DIQUIET=1 D DT^DICRW
|
---|
49 | I TXID=1 D HISTADD(.DATA,TXDUZ,TXDIV) G HISTZ
|
---|
50 | I TXID=2 D HISTUPD(TXDUZ,TXDIV) D HISTGET(TXDUZ,TXDIV) G HISTZ
|
---|
51 | I TXID=3 D HISTDEL(.DATA,TXDUZ,TXDIV) G HISTZ
|
---|
52 | ; I TXID=4 D HISTUPD(TXDUZ,TXDIV) G HISTZ ; for now, do this function with txid 2
|
---|
53 | HISTZ ;
|
---|
54 | I 'REPLY S MAGGRY=$NA(^TMP($J,"RET")),@MAGGRY@(0)=REPLY
|
---|
55 | E ; maggry otherwise has been set by called subroutine
|
---|
56 | Q
|
---|
57 | ;
|
---|
58 | HISTADD(DATA,TXDUZ,TXDIV) ; add records
|
---|
59 | N IDATA,ILOOP,CT,NOGO,EXID,HISDAT,HISTIEN,MAGRACNT,TS
|
---|
60 | S IDATA="",CT=0,NOGO=0
|
---|
61 | F ILOOP=0:1 S IDATA=$O(DATA(IDATA)) Q:IDATA="" D
|
---|
62 | . S EXID=$P(DATA(IDATA),"|"),HISDAT=$P(DATA(IDATA),"|",2)
|
---|
63 | . F I=1:1:4 I '+$P(EXID,U,I) S NOGO=1 Q
|
---|
64 | . I NOGO Q
|
---|
65 | . L +^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV):2
|
---|
66 | . E Q
|
---|
67 | . S X=$G(^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV,0)),HISTIEN=+$P(X,U)+1,$P(^(0),U)=HISTIEN
|
---|
68 | . L -^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV)
|
---|
69 | . S ^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV,0,"ADD",HISTIEN)="|"_EXID_"|"_HISTIEN_U_HISDAT_"|"
|
---|
70 | . S CT=CT+1
|
---|
71 | I 'CT S REPLY="0^3~"_$S(ILOOP:"Unable to add records",1:"No records to add")_" to History List." Q
|
---|
72 | S MAGRACNT=0 D ACTIVE^MAGJLS2(.MAGGRY,9996)
|
---|
73 | S X=@MAGGRY@(0),X=+X_U_"1~"_$$HISTTL(TXDUZ,TXDIV),@MAGGRY@(0)=X
|
---|
74 | S TS="" F I=2,0 S TS=TS_$S(TS="":"",1:U)_$$HTFM^XLFDT($H+I,0)
|
---|
75 | S ^XTMP("MAGJ2",0)=TS_U_"VistaRad List Compile"
|
---|
76 | S REPLY=1
|
---|
77 | Q
|
---|
78 | ;
|
---|
79 | HISTTL(TXDUZ,TXDIV) ; Build list title string
|
---|
80 | N LSTTL
|
---|
81 | S LSTTL="HISTORY LIST for "_$$USERINF^MAGJUTL3(TXDUZ,.01)_" at "_"Station #"_$$STATN^MAGJEX1(TXDIV)
|
---|
82 | S LSTTL=LSTTL_"|"_TXDUZ ; provide report's DUZ to client
|
---|
83 | Q LSTTL
|
---|
84 | ;
|
---|
85 | HISTGET(TXDUZ,TXDIV) ; Get full History List for input user for division txdiv
|
---|
86 | N MAGLST,LSTTL,LSTID,MAGLST
|
---|
87 | S TXDUZ=$G(TXDUZ,DUZ)
|
---|
88 | S TXDIV=$G(TXDIV,DUZ(2))
|
---|
89 | D PARAMS^MAGJLS2B(9996)
|
---|
90 | I 'LSTID S REPLY="0^4~Problem with History List Compile." Q
|
---|
91 | S LSTTL=$$HISTTL(TXDUZ,DUZ(2))
|
---|
92 | S X=$O(^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV,0))
|
---|
93 | I 'X S REPLY="0^1~No exams found for: "_LSTTL Q
|
---|
94 | S MAGLST=$NA(^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV))
|
---|
95 | D LSTOUT^MAGJLS2B(.MAGGRY,LSTID,MAGLST)
|
---|
96 | S REPLY=1
|
---|
97 | Q
|
---|
98 | ;
|
---|
99 | HISTDEL(DATA,TXDUZ,TXDIV) ; delete records
|
---|
100 | N IDATA,CT,HISTIEN,ALLDONE,LAST
|
---|
101 | S IDATA="",CT=0,ALLDONE=0
|
---|
102 | L +^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV):2
|
---|
103 | E S REPLY="0^2~Unable to access HISTORY File for deleting records; try again later." Q
|
---|
104 | S MAGGRY=$NA(^TMP($J,"RET"))
|
---|
105 | F S IDATA=$O(DATA(IDATA)) Q:IDATA=""!ALLDONE D
|
---|
106 | . S HISTIEN=$P(DATA(IDATA),U)
|
---|
107 | . I HISTIEN,$D(^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV,HISTIEN)) K ^(HISTIEN) S CT=CT+1,@MAGGRY@(CT)=HISTIEN Q
|
---|
108 | . E I HISTIEN="ALL" S HISTIEN=0 D S ALLDONE=1
|
---|
109 | . . F S HISTIEN=$O(^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV,HISTIEN)) Q:'HISTIEN K ^(HISTIEN) S CT=CT+1,@MAGGRY@(CT)=HISTIEN
|
---|
110 | I '$D(^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV,0,"ADD")) S X=$O(^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV,""),-1),^(0)=X_U_X
|
---|
111 | L -^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV)
|
---|
112 | I 'CT S REPLY="0^3~No HISTORY List records found to delete."
|
---|
113 | E S REPLY=CT_"^1~"_CT_" HISTORY List records deleted."
|
---|
114 | S @MAGGRY@(0)=REPLY
|
---|
115 | S REPLY=1
|
---|
116 | Q
|
---|
117 | ;
|
---|
118 | HISTUPD(TXDUZ,TXDIV) ; Update selected fields in History List
|
---|
119 | N LSTTL,CT,NOHIT,RAST,STATUS,REMOTE,RIST1,RIST2,RIST,RISTISME
|
---|
120 | N EXID,HISTIEN,RARPT,RADFN,RADTI,RACNI,XX1,XX2,T,X,DELETED,HDATE
|
---|
121 | S CT=0,NOHIT=0
|
---|
122 | S TXDUZ=$G(TXDUZ,DUZ)
|
---|
123 | S TXDIV=$G(TXDIV,DUZ(2))
|
---|
124 | S LSTTL=$$HISTTL(TXDUZ,DUZ(2))
|
---|
125 | S X=$O(^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV,0))
|
---|
126 | I 'X S REPLY="0^1~No exams found for: "_LSTTL Q
|
---|
127 | L +^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV):2
|
---|
128 | E S REPLY="0^2~Unable to access HISTORY File for updating records; try again later." Q
|
---|
129 | S HISTIEN=0
|
---|
130 | F S HISTIEN=$O(^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV,HISTIEN)) Q:'HISTIEN S XX1=$G(^(HISTIEN,1)),XX2=$G(^(2)) D
|
---|
131 | . S EXID=$P(XX2,"|",2),RARPT=+$P(EXID,U,4),RADFN=+$P(EXID,U),RADTI=+$P(EXID,U,2),RACNI=+$P(EXID,U,3)
|
---|
132 | . ; <*> Below is for phase 1 Alpha, til have final user setting for this <*> to be removed
|
---|
133 | . ; Age limit parameter to be passed in with txid 2 rpc call; setting is on client <*>
|
---|
134 | . S HDATE=$P(XX2,U,13) D Q:DELETED
|
---|
135 | . . S DELETED=0,HDATE=$P(HDATE,"@")
|
---|
136 | . . S X=HDATE,%DT="" D ^%DT K %DT
|
---|
137 | . . I $$FMTH^XLFDT(Y,1)<($H-3) K ^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV,HISTIEN) S DELETED=1 Q
|
---|
138 | . ; <*> End of temp change
|
---|
139 | . I RARPT,RADFN,RADTI,RACNI
|
---|
140 | . E S NOHIT=NOHIT+1 Q
|
---|
141 | . D IMGINFO^MAGJUTL2(RARPT,.X) S REMOTE=$P(X,U,4)
|
---|
142 | . S X=$G(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0))
|
---|
143 | . I X="" Q ; rad exam deleted
|
---|
144 | . S RAST=$P(X,U,3),RIST1=$P(X,U,12),RIST2=$P(X,U,15)
|
---|
145 | . S STATUS=$S(RAST:$P(^RA(72,RAST,0),U),1:"")
|
---|
146 | . S (RIST,RISTISME)=""
|
---|
147 | . I RIST1!RIST2 S X=$$RIST^MAGJUTL1(RIST1,RIST2),RIST=$P(X,U),RISTISME=$P(X,U,2)
|
---|
148 | . S RISTISME=$S(RISTISME:"Y",1:"N")
|
---|
149 | . S $P(XX1,U,16)=RAST,$P(XX1,U,8)=STATUS,$P(XX1,U,12)=REMOTE
|
---|
150 | . S T=$P(XX2,"|"),$P(T,U,3)=RIST,$P(T,U,7)=RISTISME,$P(XX2,"|")=T
|
---|
151 | . S ^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV,HISTIEN,1)=XX1,^(2)=XX2
|
---|
152 | . S CT=CT+1
|
---|
153 | S X=$O(^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV,""),-1),^(0)=X_U_X ; <*> for phase 1 alpha only?
|
---|
154 | L -^XTMP("MAGJ2","HISTORY",TXDUZ,TXDIV)
|
---|
155 | S REPLY="0^1~HISTORY File records updated." Q
|
---|
156 | Q
|
---|
157 | ;
|
---|
158 | END Q ;
|
---|