| 1 | MAGGSIU3 ;WOIFO/GEK - Utilities | 
|---|
| 2 | ;;3.0;IMAGING;**7,8,48**;Jan 11, 2005 | 
|---|
| 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 | LOG(MAGRY,MAGIX,IMAGES,PAT,WRKS,TRKID) ;Utilities for Import API, logging data for tracking and debugging | 
|---|
| 20 | ; into Imaging Windows Session and Imaging Windows Workstation files. | 
|---|
| 21 | N WRKSIEN,WRKSN0,USERSRV,MAGSTART,I,SESSIEN,X,Z,DIERR | 
|---|
| 22 | I '$L($G(WRKS)) S WRKS="NULL WORKSTATION NAME" | 
|---|
| 23 | S WRKSIEN=0 | 
|---|
| 24 | S SESSIEN=0 | 
|---|
| 25 | S WRKSIEN=$O(^MAG(2006.81,"B",WRKS,"")) | 
|---|
| 26 | I 'WRKSIEN D NEWWRKS^MAGGTAU(WRKS,"",.WRKSIEN) I WRKSIEN<1 S MAGRY="0^Error Creating Workstation Entry." Q 0 | 
|---|
| 27 | ; | 
|---|
| 28 | S WRKSN0=^MAG(2006.81,WRKSIEN,0) ; '0' node for use later. | 
|---|
| 29 | S WRKSIEN=+WRKSIEN_"," | 
|---|
| 30 | S MAGGFDA(2006.81,WRKSIEN,.01)=WRKS ; Computer Name | 
|---|
| 31 | S MAGGFDA(2006.81,WRKSIEN,8)=0 ; Active or not. | 
|---|
| 32 | S MAGGFDA(2006.81,WRKSIEN,3)="@" ; delete logoff time for this job. | 
|---|
| 33 | S MAGGFDA(2006.81,WRKSIEN,10)="@" ; delete session pointer | 
|---|
| 34 | S MAGGFDA(2006.81,WRKSIEN,11)="@" ; reset the session error count. | 
|---|
| 35 | ; | 
|---|
| 36 | ; | 
|---|
| 37 | S MAGGFDA(2006.81,WRKSIEN,12.5)=$P(WRKSN0,U,14)+1 ; total Import Sessions for workstation | 
|---|
| 38 | ; | 
|---|
| 39 | S X=$$NOW^XLFDT | 
|---|
| 40 | S MAGSTART=$E(X,1,12) | 
|---|
| 41 | I $G(DUZ) D | 
|---|
| 42 | . S MAGGFDA(2006.81,WRKSIEN,1)=DUZ | 
|---|
| 43 | . S MAGGFDA(2006.81,WRKSIEN,2)=MAGSTART | 
|---|
| 44 | ; | 
|---|
| 45 | D UPDATE^DIE("S","MAGGFDA","MAGXIEN","MAGXERR") | 
|---|
| 46 | I $D(DIERR) D RTRNERR^MAGGTAU(.MAGRY) Q 0 | 
|---|
| 47 | ; | 
|---|
| 48 | S MAGRY="1^" | 
|---|
| 49 | ; | 
|---|
| 50 | ; SESSION : Now here we have to create a new session entry; | 
|---|
| 51 | ; //TODO, make a generic call to create a Session entry, this is | 
|---|
| 52 | ;   a duplicate of code in MAGGTAU | 
|---|
| 53 | D GETS^DIQ(200,DUZ_",","29","I","Z","") ; service/section | 
|---|
| 54 | S USERSRV=$G(Z(200,DUZ_",",29,"I")) | 
|---|
| 55 | ; | 
|---|
| 56 | K MAGGFDA,MAGXERR,MAGXIEN | 
|---|
| 57 | S MAGGFDA(2006.82,"+1,",.01)=$P(^VA(200,DUZ,0),U,1) ; User | 
|---|
| 58 | S MAGGFDA(2006.82,"+1,",1)=DUZ ; USER | 
|---|
| 59 | S MAGGFDA(2006.82,"+1,",2)=MAGSTART ; Session Start Time | 
|---|
| 60 | S MAGGFDA(2006.82,"+1,",4)=+WRKSIEN ; Workstation | 
|---|
| 61 | I $D(^DPT(+PAT,0)) S MAGGFDA(2006.82,"+1,",5)=+PAT ; Patient | 
|---|
| 62 | S MAGGFDA(2006.82,"+1,",7)=+USERSRV ; User's Service/Section pointer | 
|---|
| 63 | S MAGGFDA(2006.82,"+1,",13)=3 ; 1=normal 2= started by CPRS 3= Import API session. | 
|---|
| 64 | S MAGGFDA(2006.82,"+1,",8)=$G(TRKID) ; Tracking ID | 
|---|
| 65 | ; | 
|---|
| 66 | D UPDATE^DIE("","MAGGFDA","MAGXIEN","MAGXERR") | 
|---|
| 67 | I $D(DIERR) D RTRNERR^MAGGTAU(.MAGRY) Q 0 | 
|---|
| 68 | S MAGRY="1^" | 
|---|
| 69 | I '+MAGXIEN(1) S MAGRY="0^" Q 0 | 
|---|
| 70 | S SESSIEN=+MAGXIEN(1) | 
|---|
| 71 | S MAGRY=SESSIEN_"^Session # "_SESSIEN_" Started." | 
|---|
| 72 | S MAGGFDA(2006.81,+WRKSIEN_",",10)=SESSIEN | 
|---|
| 73 | D UPDATE^DIE("","MAGGFDA","MAGXIEN","MAGXERR") | 
|---|
| 74 | D ACTION^MAGGTAU("IMPORT^",0,SESSIEN)       ; | 
|---|
| 75 | S I="" F  S I=$O(MAGIX(I)) Q:I=""  D ACTION^MAGGTAU("Data:|"_"("_I_"): "_$TR(MAGIX(I),"^","~"),0,SESSIEN) | 
|---|
| 76 | S I="" F  S I=$O(IMAGES(I)) Q:I=""  D ACTION^MAGGTAU("Image:|"_"("_I_"): "_$TR(IMAGES(I),"^","~"),0,SESSIEN) | 
|---|
| 77 | Q SESSIEN | 
|---|
| 78 | LOGRES(RES,LOGTM,MAGSESS) ; | 
|---|
| 79 | N I | 
|---|
| 80 | S LOGTM=+$G(LOGTM) | 
|---|
| 81 | I '$G(MAGSESS) Q | 
|---|
| 82 | D ACTION^MAGGTAU("RESULTS^",1,MAGSESS)       ; | 
|---|
| 83 | S I="" F  S I=$O(RES(I)) Q:I=""  D ACTION^MAGGTAU("Result:|"_"("_I_"): "_$TR(RES(I),"^","~"),LOGTM,MAGSESS) | 
|---|
| 84 | Q | 
|---|
| 85 | INPRC(RET,ARR) ; gek/Duplicate Import check | 
|---|
| 86 | ; gek/stop duplicates. Import now has a status in the Session File. | 
|---|
| 87 | ; ^MAG(2006.82,"STATUS",TRKID,SESSION IEN)= status | 
|---|
| 88 | ; INPRC tells if the Session (by Tracking ID) is in process  or not. | 
|---|
| 89 | ; if In Process, we won't return the data. | 
|---|
| 90 | ; INPRC will set the status to In Process if not currently in process. | 
|---|
| 91 | ; P48T1  This function is not called in P48. | 
|---|
| 92 | ;   Possible use in future. | 
|---|
| 93 | N I,SESS,STAT,TRKID | 
|---|
| 94 | S TRKID=0 | 
|---|
| 95 | S I="" F  S I=$O(ARR(I)) Q:I=""  D | 
|---|
| 96 | . S FLD=$P(ARR(I),"^",1) I (FLD=108)!(FLD="TRKID") D | 
|---|
| 97 | . . S TRKID=$P(ARR(I),"^",2) | 
|---|
| 98 | . . Q | 
|---|
| 99 | . Q | 
|---|
| 100 | I TRKID="" S RET="0^Null value for Tracking ID." Q 0 | 
|---|
| 101 | S RET="0^This tracking ID: "_TRKID_" isn't being processed" | 
|---|
| 102 | I '$D(^MAG(2006.82,"E",TRKID)) Q 0 | 
|---|
| 103 | S SESS=$$SES4TRK(TRKID) Q:'SESS 0  ; This tracking ID isn't being processed yet. | 
|---|
| 104 | S STAT=$$GETSTAT(TRKID,SESS) | 
|---|
| 105 | I 'STAT D SETSTAT(TRKID,SESS,"-5") Q 0  ; -5 means In Process | 
|---|
| 106 | ; If in process we return 1 | 
|---|
| 107 | I (+STAT=-5) D  Q 1 | 
|---|
| 108 | . S RET="0^Import for Tracking ID: "_TRKID_" has been processed." | 
|---|
| 109 | Q 0 | 
|---|
| 110 | SES4TRK(TRKID) ; Returns the Session ID for a Tracking ID | 
|---|
| 111 | Q +$O(^MAG(2006.82,"E",TRKID,""),-1) | 
|---|
| 112 | ; | 
|---|
| 113 | GETSTAT(TRKID,SESS) ; Get Status for given Tracking ID and Session ID | 
|---|
| 114 | Q $G(^MAG(2006.82,"STATUS",TRKID,SESS)) | 
|---|
| 115 | ; | 
|---|
| 116 | SETSTAT(TRKID,SESS,STAT) ; Set Status for given Tracking ID and Session ID | 
|---|
| 117 | S ^MAG(2006.82,"STATUS",TRKID,SESS)=STAT | 
|---|
| 118 | Q | 
|---|