| 1 | MAGDRCU1 ;WOIFO/PMK - List entries in ^MAG(2006.5839) ; 05/06/2004  06:32
 | 
|---|
| 2 |  ;;3.0;IMAGING;**10,30**;16-September-2004
 | 
|---|
| 3 |  ;; +---------------------------------------------------------------+
 | 
|---|
| 4 |  ;; | Property of the US Government.                                |
 | 
|---|
| 5 |  ;; | No permission to copy or redistribute this software is given. |
 | 
|---|
| 6 |  ;; | Use of unreleased versions of this software requires the user |
 | 
|---|
| 7 |  ;; | to execute a written test agreement with the VistA Imaging    |
 | 
|---|
| 8 |  ;; | Development Office of the Department of Veterans Affairs,     |
 | 
|---|
| 9 |  ;; | telephone (301) 734-0100.                                     |
 | 
|---|
| 10 |  ;; |                                                               |
 | 
|---|
| 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 |  Q
 | 
|---|
| 19 |  ; This routine lists the entries in the temporary Imaging/CPRS Consult
 | 
|---|
| 20 |  ; Request Tracking association file
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  ;     XXXX                                         XXX       X
 | 
|---|
| 23 |  ;    XX  XX                                         XX      XX
 | 
|---|
| 24 |  ;   XX         XXXX    XX XXX  XXXXXXX  XX  XXX     XX     XXXXX
 | 
|---|
| 25 |  ;   XX        XX  XX   XXX XX  XX       XX  XX      XX      XX
 | 
|---|
| 26 |  ;   XX    X   XX  XX   XX  XX  XXXXXXX  XX  XX      XX      XX
 | 
|---|
| 27 |  ;    XX  XX   XX  XX   XX  XX       XX  XX  XX      XX      XX XX
 | 
|---|
| 28 |  ;     XXXX     XXXX    XX  XX  XXXXXXX   XXX XX    XXXX      XXX
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  ; Routine 1/2 for application
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 | ENTRY ; read the entries in file ^MAG(2006.5839)
 | 
|---|
| 33 |  N COUNT,CUTOFF,DAYS,DIVISION,DONE,INDEX,SELECT,SERVICE,SORT,SUBTITLE,TITLE,X
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  S TITLE="UNREAD LIST FOR HEALTHCARE PROVIDERS"
 | 
|---|
| 36 |  W !!,TITLE,!!
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 |  ; get the division and service list
 | 
|---|
| 39 |  S SERVICE=0 F  S SERVICE=$O(^MAG(2006.5831,SERVICE)) Q:'SERVICE  D
 | 
|---|
| 40 |  . S X=^MAG(2006.5831,SERVICE,0)
 | 
|---|
| 41 |  . S INDEX=$P(X,"^",2),DIVISION=$P(X,"^",3)
 | 
|---|
| 42 |  . S SERVICE(DIVISION)=$$GET1^DIQ(4,DIVISION,.01)
 | 
|---|
| 43 |  . S SERVICE(DIVISION,INDEX)=$P(^MAG(2005.84,INDEX,0),"^",1)
 | 
|---|
| 44 |  . S SERVICE(DIVISION,INDEX,SERVICE)=$$GET1^DIQ(123.5,SERVICE,.01)
 | 
|---|
| 45 |  . Q
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  I '$D(SERVICE) W !,"No SERVICEs are defined in file 2006.5831" Q
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  ; select the SERVICE of interest
 | 
|---|
| 50 |  S DONE=0 F  D  Q:DONE
 | 
|---|
| 51 |  . S COUNT=0,DIVISION=""
 | 
|---|
| 52 |  . W !
 | 
|---|
| 53 |  . F  S DIVISION=$O(SERVICE(DIVISION)) Q:'DIVISION  D
 | 
|---|
| 54 |  . . S INDEX=""
 | 
|---|
| 55 |  . . F  S INDEX=$O(SERVICE(DIVISION,INDEX)) Q:INDEX=""  D
 | 
|---|
| 56 |  . . . S COUNT=COUNT+1
 | 
|---|
| 57 |  . . . W !,$J(COUNT,2),") ",$J(DIVISION,4)," -- ",SERVICE(DIVISION)
 | 
|---|
| 58 |  . . . W " -- ",SERVICE(DIVISION,INDEX)
 | 
|---|
| 59 |  . . . S SERVICE("B",COUNT)=DIVISION_"^"_INDEX
 | 
|---|
| 60 |  . . . Q
 | 
|---|
| 61 |  . . Q
 | 
|---|
| 62 |  . I COUNT=1 S SELECT="ALL",DONE=1
 | 
|---|
| 63 |  . E  D
 | 
|---|
| 64 |  . . W !!,"Select the proper service (1-",COUNT,") or enter ALL: " R X:DTIME
 | 
|---|
| 65 |  . . I X?.N,X,X'>COUNT S SELECT=SERVICE("B",X),DONE=1
 | 
|---|
| 66 |  . . E  I $L(X),"Aa"[$E(X) S SELECT="ALL",DONE=1
 | 
|---|
| 67 |  . . E  I X["^" S DONE=-1
 | 
|---|
| 68 |  . . E  I X["?" D
 | 
|---|
| 69 |  . . . W !!,"Please enter the number of the corresponding service."
 | 
|---|
| 70 |  . . . W !,"Enter ""ALL"" if you want all of the services."
 | 
|---|
| 71 |  . . . Q
 | 
|---|
| 72 |  . . E  W " ???"
 | 
|---|
| 73 |  . . Q
 | 
|---|
| 74 |  . Q
 | 
|---|
| 75 |  I DONE=-1 Q  ; cancelled by user
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 |  I SELECT="ALL" D
 | 
|---|
| 78 |  . S DIVISION=""
 | 
|---|
| 79 |  . F  S DIVISION=$O(SERVICE(DIVISION)) Q:'DIVISION  D
 | 
|---|
| 80 |  . . S INDEX=""
 | 
|---|
| 81 |  . . F  S INDEX=$O(SERVICE(DIVISION,INDEX)) Q:INDEX=""  D
 | 
|---|
| 82 |  . . . D SELSERV(DIVISION,INDEX)
 | 
|---|
| 83 |  . . . Q
 | 
|---|
| 84 |  E  D
 | 
|---|
| 85 |  . S DIVISION=$P(SELECT,"^",1),INDEX=$P(SELECT,"^",2)
 | 
|---|
| 86 |  . D SELSERV(DIVISION,INDEX)
 | 
|---|
| 87 |  . Q
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 |  S DONE=0 F  D  Q:DONE
 | 
|---|
| 90 |  . W !!,"Display studies older than how many days?  0// "
 | 
|---|
| 91 |  . R X:DTIME I X="" S X=0 W X
 | 
|---|
| 92 |  . I X?.N S DAYS=X,DONE=1 Q
 | 
|---|
| 93 |  . E  I X["^" S DONE=-1
 | 
|---|
| 94 |  . E  I X["?" D
 | 
|---|
| 95 |  . . W !!,"Please enter the minimum number of days that have elapsed since"
 | 
|---|
| 96 |  . . W !,"the examination was performed.  This allows only the old studies"
 | 
|---|
| 97 |  . . W !,"to be reported.  Enter 0 days to display all the studies."
 | 
|---|
| 98 |  . . Q
 | 
|---|
| 99 |  . E  W " ???"
 | 
|---|
| 100 |  . Q
 | 
|---|
| 101 |  I DONE=-1 Q  ; cancelled by user
 | 
|---|
| 102 |  S %H=($H+1)-DAYS D YMD^%DTC S CUTOFF=X
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 |  S DONE=0 F  D  Q:DONE
 | 
|---|
| 105 |  . W !!,"Sort by patient name or examination date? (N or D) D// "
 | 
|---|
| 106 |  . R X:DTIME I X="" S X="D" W X
 | 
|---|
| 107 |  . I "NnDd"[$E(X) S SORT=X,DONE=1 Q
 | 
|---|
| 108 |  . E  I X["^" S DONE=-1
 | 
|---|
| 109 |  . E  I X["?" D
 | 
|---|
| 110 |  . . W !!,"Designate the sort order for the report, alphabetically by patient"
 | 
|---|
| 111 |  . . W !,"name or chronologically by the examination date."
 | 
|---|
| 112 |  . . Q
 | 
|---|
| 113 |  . E  W " ???"
 | 
|---|
| 114 |  . Q
 | 
|---|
| 115 |  I DONE=-1 Q  ; cancelled by user
 | 
|---|
| 116 |  ;
 | 
|---|
| 117 |  I SELECT="ALL" S SUBTITLE(1)="ALL SERVICES"
 | 
|---|
| 118 |  E  D
 | 
|---|
| 119 |  . S SUBTITLE(1)=$P(SELECT,"^",1)_" -- "_SERVICE($P(SELECT,"^",1))
 | 
|---|
| 120 |  . S SUBTITLE(1)=SUBTITLE(1)_" -- "_SERVICE($P(SELECT,"^",1),$P(SELECT,"^",2))
 | 
|---|
| 121 |  . Q
 | 
|---|
| 122 |  I DAYS S SUBTITLE(2)="Studies more than "_DAYS_" days old"
 | 
|---|
| 123 |  E  S SUBTITLE(2)="All studies regardless of age"
 | 
|---|
| 124 |  S SUBTITLE(2)=SUBTITLE(2)_" sorted by "_$S(SORT="D":"date",1:"name")
 | 
|---|
| 125 |  ;
 | 
|---|
| 126 |  ; Output the report
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 |  W ! S %ZIS="Q" D ^%ZIS I POP Q  ; select the output device, quit if none
 | 
|---|
| 129 |  ;
 | 
|---|
| 130 |  ; setup for queueing the report to print in the background via Taskman 
 | 
|---|
| 131 |  I $D(IO("Q")) D  ; queued
 | 
|---|
| 132 |  . S ZTSAVE("CUTOFF")=""
 | 
|---|
| 133 |  . S ZTSAVE("SELECT")=""
 | 
|---|
| 134 |  . S ZTSAVE("SERVICE(")=""
 | 
|---|
| 135 |  . S ZTSAVE("SORT")=""
 | 
|---|
| 136 |  . S ZTSAVE("SUBTITLE(")=""
 | 
|---|
| 137 |  . S ZTSAVE("TITLE")=""
 | 
|---|
| 138 |  . S ZTRTN="REPORT^MAGDRCU2",ZTDESC=TITLE
 | 
|---|
| 139 |  . D ^%ZTLOAD D HOME^%ZIS K IO("Q")
 | 
|---|
| 140 |  . Q
 | 
|---|
| 141 |  E  D  ; immediate
 | 
|---|
| 142 |  . D REPORT^MAGDRCU2
 | 
|---|
| 143 |  . Q
 | 
|---|
| 144 |  Q
 | 
|---|
| 145 |  ;
 | 
|---|
| 146 | SELSERV(DIVISION,INDEX) ; select service
 | 
|---|
| 147 |  N S
 | 
|---|
| 148 |  S S=""
 | 
|---|
| 149 |  F  S S=$O(SERVICE(DIVISION,INDEX,S)) Q:S=""  D
 | 
|---|
| 150 |  . S SERVICE("S",S)=SERVICE(DIVISION,INDEX,S)
 | 
|---|
| 151 |  . Q
 | 
|---|
| 152 |  Q
 | 
|---|
| 153 |  ;
 | 
|---|