1 | MAGDTR02 ;WOIFO/PMK - Unread List for Consult/Procedure Request ; 10 Oct 2006 11:01 AM
|
---|
2 | ;;3.0;IMAGING;**46**;16-February-2007;;Build 1023
|
---|
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 | ;; | The Food and Drug Administration classifies this software as |
|
---|
12 | ;; | a medical device. As such, it may not be changed in any way. |
|
---|
13 | ;; | Modifications to this software may result in an adulterated |
|
---|
14 | ;; | medical device under 21CFR820, the use of which is considered |
|
---|
15 | ;; | to be a violation of US Federal Statutes. |
|
---|
16 | ;; +---------------------------------------------------------------+
|
---|
17 | ;;
|
---|
18 | FORWARD ; entry point from ^MAGDT01 for a FORWARD request
|
---|
19 | N FWDFROM ;-- forwarded from service
|
---|
20 | N ISPECIDX ;- index to specialties - read/unread list sort key
|
---|
21 | N IPROCIDX ;- index to procedures - read/unread list sort key (may be null)
|
---|
22 | N LISTDATA ;- read/unread list data
|
---|
23 | N UNREAD ;--- pointer to an entry in the read/unread list
|
---|
24 | N OUNREAD,NUNREAD ; old and new unread list dictionary pointers
|
---|
25 | N OACQSITE,NACQSITE ; old and new unread list acquisition sites
|
---|
26 | N OPROCIDX,NPROCIDX ; old and new unread list procedure indexes
|
---|
27 | N OSPECIDX,NSPECIDX ; old and new unread list specialty indexes
|
---|
28 | N NEWENTRY ; - pointer to new entry in unread list
|
---|
29 | N I,X
|
---|
30 | ;
|
---|
31 | ; get previous service from REQUEST PROCESSING ACTIVITY
|
---|
32 | S FWDFROM=$$FWDFROM^MAGDGMRC(GMRCIEN) ; FORWARDED FROM service
|
---|
33 | S OUNREAD=$$FINDLIST^MAGDTR01(GMRCIEN,.OSPECIDX,.OPROCIDX,.OACQSITE,,,FWDFROM)
|
---|
34 | S NUNREAD=$$FINDLIST^MAGDTR01(GMRCIEN,.NSPECIDX,.NPROCIDX,.NACQSITE)
|
---|
35 | ;
|
---|
36 | I 'OUNREAD,'NUNREAD Q ; neither old nor new TO SERVICE have unread lists
|
---|
37 | ;
|
---|
38 | I 'OUNREAD,NUNREAD D Q ; only new TO SERVICE has an unread list
|
---|
39 | . N D0,IMAGECNT,MAGIEN,TRIGGER
|
---|
40 | . S IMAGECNT=0
|
---|
41 | . ; count the number of images, if any
|
---|
42 | . S D0="" F S D0=$O(^MAG(2006.5839,"C",123,GMRCIEN,D0)) Q:'D0 D
|
---|
43 | . . S MAGIEN=$P($G(^MAG(2006.5839,D0,0)),"^",3)
|
---|
44 | . . I MAGIEN D ; make sure you got a good group pointer
|
---|
45 | . . . ; get #images from Object Group file (2005.04)
|
---|
46 | . . . S IMAGECNT=IMAGECNT+$P($G(^MAG(2005,MAGIEN,1,0)),"^",4)
|
---|
47 | . . . Q
|
---|
48 | . . Q
|
---|
49 | . S TRIGGER=$S(IMAGECNT:"I",1:"")_"OF"
|
---|
50 | . ; create the new unread list entry
|
---|
51 | . D ADD^MAGDTR03(.NEWENTRY,GMRCIEN,TRIGGER,IMAGECNT)
|
---|
52 | . Q
|
---|
53 | ;
|
---|
54 | I OUNREAD,'NUNREAD D Q ; only old TO SERVICE has an unread list
|
---|
55 | . S UNREAD=$$UNREAD^MAGDTR02(GMRCIEN)
|
---|
56 | . S X=$$STATUPDT^MAGDTR02(UNREAD,"D") ; set status of old entry to DELETE
|
---|
57 | . Q
|
---|
58 | ;
|
---|
59 | ; both the old TO SERVICE and the new TO SERVICE have unread lists
|
---|
60 | ;
|
---|
61 | ; are the old and new unread lists the same?
|
---|
62 | ;
|
---|
63 | S UNREAD=$$UNREAD^MAGDTR02(GMRCIEN)
|
---|
64 | I OACQSITE=NACQSITE,OSPECIDX=NSPECIDX,OPROCIDX=NPROCIDX D Q
|
---|
65 | . ; exactly the same unread lists for old and new TO SERVICES
|
---|
66 | . I UNREAD S X=$$TIMESTMP^MAGDTR02(UNREAD) ; update the timestamp
|
---|
67 | . Q
|
---|
68 | ;
|
---|
69 | ; different unread lists for old and new TO SERVICES
|
---|
70 | ;
|
---|
71 | ; is there an old unread list?
|
---|
72 | S LISTDATA=$S(UNREAD:$G(^MAG(2006.5849,UNREAD,0)),1:"")
|
---|
73 | I LISTDATA="" D Q ; no old unread list
|
---|
74 | . D ADD^MAGDTR03(.NEWENTRY,GMRCIEN,"OF") ; create the new unread list entry
|
---|
75 | . Q
|
---|
76 | ;
|
---|
77 | ; there is an old unread list entry
|
---|
78 | ; create the new unread list and copy the data from the old unread list entry
|
---|
79 | S X=$$STATUPDT^MAGDTR02(UNREAD,"D")
|
---|
80 | D ADD^MAGDTR03(.NEWENTRY,GMRCIEN,"IOF") Q:'NEWENTRY ; create the new unread list entry
|
---|
81 | F I=7,8,10 D ; copy acquisition start, next acquisition, and number of images
|
---|
82 | . S $P(^MAG(2006.5849,NEWENTRY,0),"^",I)=$P(^MAG(2006.5849,UNREAD,0),"^",I)
|
---|
83 | . Q
|
---|
84 | Q
|
---|
85 | ;
|
---|
86 | ;
|
---|
87 | ; common functions
|
---|
88 | ;
|
---|
89 | UNREAD(GMRCIEN) ; look up unread list internal entry number
|
---|
90 | N HIT,LISTDATA,UNREAD,STATUS
|
---|
91 | Q:'$G(GMRCIEN) ""
|
---|
92 | S UNREAD="",HIT=0
|
---|
93 | F S UNREAD=$O(^MAG(2006.5849,"B",GMRCIEN,UNREAD)) Q:'UNREAD D Q:HIT
|
---|
94 | . S LISTDATA=$G(^MAG(2006.5849,UNREAD,0))
|
---|
95 | . S STATUS=$P(LISTDATA,"^",11)
|
---|
96 | . I STATUS'="D" S HIT=1 ; ignore deleted entries
|
---|
97 | . Q
|
---|
98 | Q UNREAD
|
---|
99 | ;
|
---|
100 | STATUPDT(UNREAD,STATUS) ; update the status
|
---|
101 | N ACQSITE,IPROCIDX,ISPECIDX,OSTATUS,LISTDATA,TIMESTMP
|
---|
102 | S TIMESTMP=0
|
---|
103 | I $G(UNREAD),$G(STATUS)'="",$D(^MAG(2006.5849,UNREAD,0)) D
|
---|
104 | . S LISTDATA=$G(^MAG(2006.5849,UNREAD,0))
|
---|
105 | . S ACQSITE=$P(LISTDATA,"^",2) Q:ACQSITE=""
|
---|
106 | . S ISPECIDX=$P(LISTDATA,"^",3) Q:ISPECIDX=""
|
---|
107 | . S IPROCIDX=$P(LISTDATA,"^",4) Q:IPROCIDX=""
|
---|
108 | . S OSTATUS=$P(LISTDATA,"^",11) Q:OSTATUS=""
|
---|
109 | . K ^MAG(2006.5849,"D",ACQSITE,ISPECIDX,IPROCIDX,OSTATUS,UNREAD)
|
---|
110 | . S $P(^MAG(2006.5849,UNREAD,0),"^",11)=STATUS
|
---|
111 | . S ^MAG(2006.5849,"D",ACQSITE,ISPECIDX,IPROCIDX,STATUS,UNREAD)=""
|
---|
112 | . S TIMESTMP=$$TIMESTMP^MAGDTR02(UNREAD) ; update time stamp piece of last activity
|
---|
113 | . Q
|
---|
114 | Q TIMESTMP
|
---|
115 | ;
|
---|
116 | TIMESTMP(UNREAD) ; update the transaction's timestamp and cross-reference
|
---|
117 | N ACQSITE ;-- acquisition site
|
---|
118 | N NEWTIME ;-- time stamp of the current transaction
|
---|
119 | N OLDTIME ;-- time stamp of the previous transaction
|
---|
120 | N LISTDATA ;- read/unread list data
|
---|
121 | N ISPECIDX ;- index to specialties - read/unread list sort key
|
---|
122 | N IPROCIDX ;- index to procedures - read/unread list sort key (may be null)
|
---|
123 | N %,%H,%I
|
---|
124 | Q:'$G(UNREAD) ""
|
---|
125 | D NOW^%DTC S NEWTIME=%
|
---|
126 | L +^MAG(2006.5849,UNREAD):1E9
|
---|
127 | S LISTDATA=^MAG(2006.5849,UNREAD,0)
|
---|
128 | S ACQSITE=$P(LISTDATA,"^",2) I ACQSITE="" Q 0
|
---|
129 | S ISPECIDX=$P(LISTDATA,"^",3) I ISPECIDX="" Q 0
|
---|
130 | S IPROCIDX=$P(LISTDATA,"^",4) I IPROCIDX="" Q 0
|
---|
131 | S OLDTIME=$P(LISTDATA,"^",9)
|
---|
132 | I ACQSITE'="",ISPECIDX'="",IPROCIDX'="" D
|
---|
133 | . K:OLDTIME ^MAG(2006.5849,"AC",ACQSITE,ISPECIDX,IPROCIDX,OLDTIME,UNREAD)
|
---|
134 | . S ^MAG(2006.5849,"AC",ACQSITE,ISPECIDX,IPROCIDX,NEWTIME,UNREAD)=""
|
---|
135 | . Q
|
---|
136 | S $P(^MAG(2006.5849,UNREAD,0),"^",9)=NEWTIME
|
---|
137 | L -^MAG(2006.5849,UNREAD)
|
---|
138 | Q NEWTIME
|
---|