| 1 | MAGGNTI ;WOIFO/GEK - Imaging interface to TIU RPC Calls etc. ; 04 Apr 2002  2:37 PM | 
|---|
| 2 | ;;3.0;IMAGING;**10,8,59**;Nov 27, 2007;Build 20 | 
|---|
| 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 | Q | 
|---|
| 19 | FILE(MAGRY,MAGDA,TIUDA) ;RPC [MAG3 TIU IMAGE] | 
|---|
| 20 | ; Call to file TIU and Imaging Pointers | 
|---|
| 21 | ; TIU API to add image to TIU | 
|---|
| 22 | N X | 
|---|
| 23 | I $P(^TIU(8925,TIUDA,0),U,2)'=$P(^MAG(2005,MAGDA,0),U,7) S MAGRY="0^Patient Mismatch." Q | 
|---|
| 24 | D PUTIMAGE^TIUSRVPL(.MAGRY,TIUDA,MAGDA) ; | 
|---|
| 25 | I 'MAGRY Q | 
|---|
| 26 | ; Now SET the Parent fields in the Image File | 
|---|
| 27 | S $P(^MAG(2005,MAGDA,2),U,6,8)=8925_U_TIUDA_U_+MAGRY | 
|---|
| 28 | ; DONE. | 
|---|
| 29 | S MAGRY="1^Image pointer filed successfully" | 
|---|
| 30 | ; Now we save the PARENT ASSOCIATION Date/Time | 
|---|
| 31 | D LINKDT^MAGGTU6(.X,MAGDA) | 
|---|
| 32 | Q | 
|---|
| 33 | DATA(MAGRY,TIUDA) ;RPC [MAG3 TIU DATA FROM DA] | 
|---|
| 34 | ; Call to get TIU data from the TIUDA | 
|---|
| 35 | ; Return =     TIUDA^Document Type ^Document Date^DFN^Author DUZ | 
|---|
| 36 | ; | 
|---|
| 37 | S MAGRY=TIUDA_U_$$GET1^DIQ(8925,TIUDA,".01","E")_U_$$GET1^DIQ(8925,TIUDA,"1201","I")_U_$$GET1^DIQ(8925,TIUDA,".02","I")_U_$$GET1^DIQ(8925,TIUDA,"1202","I")_U | 
|---|
| 38 | Q | 
|---|
| 39 | IMAGES(MAGRY,TIUDA) ;RPC [MAG3 CPRS TIU NOTE] | 
|---|
| 40 | ; Call to get all images for a given TIU DA | 
|---|
| 41 | ; We first get all Image IEN's breaking groups into separate images | 
|---|
| 42 | ; Then get Image Info for each one. | 
|---|
| 43 | ; MAGRY    -     Return array of Image Data entries | 
|---|
| 44 | ; MAGRY(0)    is   1 ^ message  if successful | 
|---|
| 45 | ;                  0 ^ Error message if error; | 
|---|
| 46 | ; TIUDA  is IEN in ^TIU(8925 | 
|---|
| 47 | ; | 
|---|
| 48 | ; Call TIU API to get list of Image IEN's | 
|---|
| 49 | N MAGARR,CT,TCT,I,J,Z K ^TMP($J,"MAGGX") | 
|---|
| 50 | N DA,MAGQI,MAGNCHK,MAGXX,MAGRSLT | 
|---|
| 51 | N TIUDFN,MAGQUIT ; MAGQI 8/22/01 | 
|---|
| 52 | ; MAGFILE is returned from MAGGTII | 
|---|
| 53 | ; | 
|---|
| 54 | S MAGQUIT=0 ; MAGQI 8/22/01 | 
|---|
| 55 | S TIUDFN=$P($G(^TIU(8925,TIUDA,0)),U,2) ;MAGQI 8/22/01 | 
|---|
| 56 | I 'TIUDFN S MAGRY(0)="0^Invalid Patient DFN for Note ID: '"_TIUDA_"'" | 
|---|
| 57 | D GETILST^TIUSRVPL(.MAGARR,TIUDA) | 
|---|
| 58 | S CT=0,TCT=0 | 
|---|
| 59 | ; Now get all images for all groups and single images. | 
|---|
| 60 | S I="" F  S I=$O(MAGARR(I)) Q:'I  S DA=MAGARR(I) D  ;Q:MAGQUIT | 
|---|
| 61 | . S Z=$$ISDELIMG(DA) I Z S TCT=TCT+1,MAGRY(TCT)="B2^"_Z Q | 
|---|
| 62 | . ; Check that array of images from selected TIUDA have | 
|---|
| 63 | . ;     same patient's and valid backward pointers | 
|---|
| 64 | . I $P($G(^MAG(2005,DA,0)),U,7)'=TIUDFN S MAGQUIT=1,MAGNCHK="Patient Mismatch. TIU: "_TIUDA | 
|---|
| 65 | . I $P($G(^MAG(2005,DA,2)),U,7)'=TIUDA S MAGQUIT=1,MAGNCHK="Pointer Mismatch. TIU: "_TIUDA | 
|---|
| 66 | . I MAGQUIT S MAGXX=DA D INFO^MAGGTII D  Q | 
|---|
| 67 | . . ; remove the Abstract and Image File Names  ; 2/14/03 p8t14  remove c:\program files.  with   .\bmp\ | 
|---|
| 68 | . . S $P(MAGFILE,U,2,3)="-1~Questionable Data Integrity^.\bmp\imageQA.bmp" | 
|---|
| 69 | . . ;this stops Delphi App from changing Abstract BMP to OFFLINE IMAGE | 
|---|
| 70 | . . S $P(MAGFILE,U,6)=$S(($P(MAGFILE,U,6)'=11):"99",1:11) | 
|---|
| 71 | . . S $P(MAGFILE,U,10)="M" | 
|---|
| 72 | . . ;Send the error message | 
|---|
| 73 | . . S $P(MAGFILE,U,17)=MAGNCHK | 
|---|
| 74 | . . S TCT=TCT+1,MAGRY(TCT)="B2^"_MAGFILE | 
|---|
| 75 | . ; | 
|---|
| 76 | . I $O(^MAG(2005,DA,1,0)) D  Q | 
|---|
| 77 | . . ; Integrity check, if group is questionable, add it's ien to list, not it's | 
|---|
| 78 | . . ;   children.  Later when list is looped through, it's INFO^MAGGTII will be in | 
|---|
| 79 | . . ;   list.  Have to do this to allow other images in list from TIU to be processed. | 
|---|
| 80 | . . D CHK^MAGGSQI(.MAGQI,DA) I 'MAGQI(0) S CT=CT+1,^TMP($J,"MAGGX",CT)=DA Q | 
|---|
| 81 | . . S J=0 ; the following line needs to take only the first piece of the node - PMK 4/4/02 | 
|---|
| 82 | . . F  S J=$O(^MAG(2005,DA,1,J)) Q:'J  S CT=CT+1,^TMP($J,"MAGGX",CT)=$P(^(J,0),"^") | 
|---|
| 83 | . S CT=CT+1 | 
|---|
| 84 | . S ^TMP($J,"MAGGX",CT)=DA | 
|---|
| 85 | ; Now get image info for each image | 
|---|
| 86 | ; | 
|---|
| 87 | S Z="" | 
|---|
| 88 | S MAGQUIET=1 | 
|---|
| 89 | F  S Z=$O(^TMP($J,"MAGGX",Z)) Q:Z=""  D | 
|---|
| 90 | . S TCT=TCT+1,MAGXX=^TMP($J,"MAGGX",Z) | 
|---|
| 91 | . ;GEK 8/24/00 Stopping the Invalid Image IEN's and Deleted Images | 
|---|
| 92 | . I '$D(^MAG(2005,MAGXX)) D  Q | 
|---|
| 93 | . . D INVALID^MAGGTIG(MAGXX,.MAGRSLT) S MAGRY(CT)=MAGRSLT | 
|---|
| 94 | . D INFO^MAGGTII | 
|---|
| 95 | . S MAGRY(TCT)="B2^"_MAGFILE | 
|---|
| 96 | K MAGQUIET | 
|---|
| 97 | S MAGRY(0)=TCT_"^"_TCT_" Images for the selected TIU NOTE" | 
|---|
| 98 | ; Put the Image IEN of the last image into the group IEN field. | 
|---|
| 99 | Q:'TCT | 
|---|
| 100 | S $P(MAGRY(0),U,3)=TIUDA | 
|---|
| 101 | K MAGRSLT | 
|---|
| 102 | D DATA(.MAGRSLT,TIUDA) | 
|---|
| 103 | S $P(MAGRY(0),U,4)=$$GET1^DIQ(8925,TIUDA,".02","E")_"  "_$P(MAGRSLT,U,2)_"  "_$$FMTE^XLFDT($P(MAGRSLT,U,3),"8") | 
|---|
| 104 | ; | 
|---|
| 105 | S $P(MAGRY(0),U,5)=$S($P($G(MAGFILE),U):$P(MAGFILE,U),$G(MAGXX):MAGXX,1:0) | 
|---|
| 106 | Q | 
|---|
| 107 | ;. S Z=ISDELIMG(DA) I Z S TCT=TCT+1,MAGRY(TCT)="B2^"_$P(Z,U,2) Q | 
|---|
| 108 | ISDELIMG(MAGIEN) ; Is this a deleted Image. | 
|---|
| 109 | N MAGDEL,MAGIMG,MAGR,Z,MAGT | 
|---|
| 110 | S MAGDEL=$D(^MAG(2005.1,MAGIEN)) | 
|---|
| 111 | S MAGIMG=$D(^MAG(2005,MAGIEN)) | 
|---|
| 112 | I MAGIMG,'MAGDEL S MAGR="0^Valid Image" | 
|---|
| 113 | I 'MAGIMG,MAGDEL S MAGR="1^Deleted Image",MAGT=66 | 
|---|
| 114 | I 'MAGIMG,'MAGDEL S MAGR="1^Invalid Image pointer",MAGT=67 | 
|---|
| 115 | I MAGIMG,MAGDEL S MAGR="0^Image IEN exists, and is Deleted !" | 
|---|
| 116 | I 'MAGR Q MAGR | 
|---|
| 117 | S MAGR=$P(MAGR,U,2) | 
|---|
| 118 | S $P(Z,U,1,4)=MAGIEN_"^-1~"_MAGR_"^-1~"_MAGR_"^"_MAGR | 
|---|
| 119 | S $P(Z,U,6)=MAGT | 
|---|
| 120 | ;this stops Delphi App from changing Abstract BMP to OFFLINE IMAGE | 
|---|
| 121 | S $P(Z,U,10)="M" | 
|---|
| 122 | ;Send the error message | 
|---|
| 123 | S $P(Z,U,17)=$P(MAGR,U,2) | 
|---|
| 124 | Q Z | 
|---|
| 125 | ISDOCCL(MAGRY,IEN,TIUFILE,CLASS) ;RPC [MAGG IS DOC CLASS] | 
|---|
| 126 | ;Checks to see if IEN of TIU Files 8925 or 8925.1 is of a certain Doc Class | 
|---|
| 127 | ;MAGRY  = Return String | 
|---|
| 128 | ;                 for Success   "1^message" | 
|---|
| 129 | ;                 for Failure   "0^message" | 
|---|
| 130 | ;IEN    = Internal Entry Number in the TIUFILE | 
|---|
| 131 | ;TIUFILE = either 8925   if we need to see if a Note is of a Document Class | 
|---|
| 132 | ;            or   8925.1 if we need to see if a Title is of a Document Class | 
|---|
| 133 | ;CLASS  = Text Name of the Document Class   example: "ADVANCE DIRECTIVE" | 
|---|
| 134 | ; | 
|---|
| 135 | S MAGRY="0^Unknown Error checking TIU Document Class" | 
|---|
| 136 | K MAGTRGT,DEFIEN,DOCCL,RES,DONE,NTTL | 
|---|
| 137 | S DONE=0 | 
|---|
| 138 | ; If we're resolving a Title | 
|---|
| 139 | I TIUFILE="8925.1" D  Q:DONE | 
|---|
| 140 | . S DEFIEN=IEN,NTTL="Title" | 
|---|
| 141 | . I '$D(^TIU(8925.1,DEFIEN,0)) S MAGRY="0^Invalid Title IEN",DONE=1 Q | 
|---|
| 142 | . Q | 
|---|
| 143 | ; If we're resolving a Note | 
|---|
| 144 | I TIUFILE="8925" D  Q:DONE | 
|---|
| 145 | . S NTTL="Note" | 
|---|
| 146 | . I '$D(^TIU(8925,IEN)) S MAGRY="0^Invalid Note IEN",DONE=1 Q | 
|---|
| 147 | . ; Get Title IEN from Note IEN | 
|---|
| 148 | . S DEFIEN=$$GET1^DIQ(8925,IEN_",",.01,"I") | 
|---|
| 149 | . I DEFIEN="" S MAGRY="0^Error resolving Document Class from Note IEN" S DONE=1 Q | 
|---|
| 150 | . Q | 
|---|
| 151 | ; | 
|---|
| 152 | ; Find the IEN in 8925.1 for Document Class (CLASS) | 
|---|
| 153 | D FIND^DIC(8925.1,"","@;.001","X",CLASS,"","","I $P(^(0),U,4)=""DC""","","MAGTRGT") | 
|---|
| 154 | S DOCCL=$G(MAGTRGT("DILIST",2,1)) | 
|---|
| 155 | ; | 
|---|
| 156 | ; See if ^TIU(8925.1,DEFIEN is of Document Class DOCCL | 
|---|
| 157 | S RES=$$ISA^TIULX(DEFIEN,DOCCL) | 
|---|
| 158 | I RES S MAGRY="1^The "_NTTL_" is of Document Class "_CLASS Q | 
|---|
| 159 | S MAGRY="0^The "_NTTL_" is Not of Document Class "_CLASS | 
|---|
| 160 | Q | 
|---|