| 1 | MAGDMEDJ ;WOIFO/LB - Routine to fix failed DICOM entries ; [ 06/20/2001 08:56 ] | 
|---|
| 2 | ;;3.0;IMAGING;;Mar 01, 2002 | 
|---|
| 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 | L ;Loop thru the entire file for entries that need processing | 
|---|
| 20 | ;The "F" xref is set for unique Study UIDs. The entry setting this xref | 
|---|
| 21 | ;will also have a "RLATE" node with all the Xray images associated with | 
|---|
| 22 | ;that unique Study UID. | 
|---|
| 23 | N ANS,CASEDATE,CASENO,COMNT1,DATA,DATA1,DATA2,DATE,FILE,FOUND,MACHID,MAGDY,MAGIEN,MAGDIMG | 
|---|
| 24 | N MAGDIEN,MOD,MODEL,MSG,MAGPAT,MAGTYPE,MEDFILE | 
|---|
| 25 | N NEWCAS,NEWDFN,NEWDTI,NEWDTIM,NEWMUL,NEWNME,NEWPIEN,NEWPROC,NEWSSN | 
|---|
| 26 | N OOUT,OUT,PAT,PID,REASON,STUDYUID,JJ,ITEM | 
|---|
| 27 | I '$D(^MAGD(2006.575,"F")) W !,"Nothing to process!" Q | 
|---|
| 28 | S (MAGIEN,STUDYUID,OOUT,OUT)=0 | 
|---|
| 29 | F  S STUDYUID=$O(^MAGD(2006.575,"F",STUDYUID)) Q:STUDYUID<1!(OOUT)  D | 
|---|
| 30 | . S MAGIEN=$O(^MAGD(2006.575,"F",STUDYUID,0)) Q:'MAGIEN | 
|---|
| 31 | . Q:'$D(^MAGD(2006.575,MAGIEN,0)) | 
|---|
| 32 | . Q:$P($G(^MAGD(2006.575,MAGIEN,"FIXD")),"^")    ;Already fixed. | 
|---|
| 33 | . ; Only Medicine images | 
|---|
| 34 | . S MAGTYPE=$G(^MAGD(2006.575,MAGIEN,"TYPE")) | 
|---|
| 35 | . Q:MAGTYPE'["MED" | 
|---|
| 36 | . ; Only Medicine images need to be fixed thru this program. | 
|---|
| 37 | . S DATA=^MAGD(2006.575,MAGIEN,0),FILE=$P(^(0),"^") | 
|---|
| 38 | . S DATA1=^MAGD(2006.575,MAGIEN,1)    ;Case no. info | 
|---|
| 39 | . S DATA2=^MAGD(2006.575,MAGIEN,"AMFG")    ;Modality info | 
|---|
| 40 | . S PAT=$P(DATA,"^",4),PID=$P(DATA,"^",3),REASON=$P(DATA,"^",2) | 
|---|
| 41 | . S MOD=$P(DATA2,"^"),MODEL=$P(DATA2,"^",6) | 
|---|
| 42 | . S CASENO=$P(DATA1,"^",2),CASEDATE=$P(DATA1,"^",3) | 
|---|
| 43 | . S MACHID=$P(DATA1,"^",4),DATE=CASEDATE | 
|---|
| 44 | . S COMNT1=$G(^MAGD(2006.575,MAGIEN,"ACSTXT")) ;1st line comment. | 
|---|
| 45 | . ; Use patient information send via DICOM FILE | 
|---|
| 46 | . S MEDFILE=$$FILE^MAGDMEDI($P(CASENO,"-")) | 
|---|
| 47 | . D DISPLAY S ANS=$$ASK^MAGDLB1 I ANS="Q"!(ANS["^") S (OOUT,OUT)=1 Q | 
|---|
| 48 | . I ANS="N" S OUT=1 Q | 
|---|
| 49 | . I ANS="D" D SETDEL Q | 
|---|
| 50 | . Q:OUT | 
|---|
| 51 | . K MAGDY W !," Lookup patient name",! | 
|---|
| 52 | . S MAGPAT=$$PATLK^MCARUTL2 | 
|---|
| 53 | . I 'MAGPAT D  Q | 
|---|
| 54 | . . W !,"Can not update if patient can not be identified.",$C(7) | 
|---|
| 55 | . ; If patient name could not be determined then we can not correct. | 
|---|
| 56 | . D PATSUB^MAGDMEDK(.MAGSUB,MAGPAT) | 
|---|
| 57 | . Q:'$D(MAGSUB)#10   ;No subspecialties found | 
|---|
| 58 | . ;Q:'$D(MAGMC)#10    ;No Medicine entries found | 
|---|
| 59 | . ; Select subspecialty | 
|---|
| 60 | . S SUB=$$DISPLAY^MAGDMEDL(.MAGSUB) I 'SUB D  Q | 
|---|
| 61 | . . W !,"No specialty selected" | 
|---|
| 62 | . S SUB=$P(MAGSUB(SUB),"^"),SUB=$P(SUB,"(",2),SUB=$P(SUB,")",1) | 
|---|
| 63 | . D SUB^MAGDMEDK(SUB,MAGPAT) | 
|---|
| 64 | . I '$D(MAGMC)#10 D  Q | 
|---|
| 65 | . . W !,"No entries were found for the selected specialty." | 
|---|
| 66 | . D LOOP^MAGDMEDL(.XX,MAGPAT,SUB,CASEDATE) | 
|---|
| 67 | . ;S ITEM=$$DISPLAY^MAGDMEDL(.XX) I 'ITEM D | 
|---|
| 68 | . ;. W !,"No entry selected." | 
|---|
| 69 | . I $D(XX(0)),$P(XX(0),"^")=0 D  Q:MAGDOUT | 
|---|
| 70 | . . S MAGDOUT=0 | 
|---|
| 71 | . . W !,"No Medicine file entries found for this patient" | 
|---|
| 72 | . . W !,"on the date/time the image was captured." | 
|---|
| 73 | . . S FOUND=$$ASKMORE^MAGDMEDL I 'FOUND S MAGDOUT=1 | 
|---|
| 74 | . S ITEM=$$DISPLAY^MAGDMEDL(.XX) I 'ITEM D  Q | 
|---|
| 75 | . . W !,"Can not update if Medicine file entry can not be found.",$C(7) | 
|---|
| 76 | . D NEWCASE,CHK,NEWDIS S ANS=$$ASK^MAGDLB1 I ANS="D" D SETDEL Q | 
|---|
| 77 | . I ANS="Q"!(ANS["^") S (OOUT,OUT)=1 Q | 
|---|
| 78 | . I ANS="N" S OUT=1 Q | 
|---|
| 79 | . Q:OUT  D UPDT | 
|---|
| 80 | K OUT,OOUT,ANS,MAGDOUT,MAGMC,MAGSUB,SUB,XX | 
|---|
| 81 | Q | 
|---|
| 82 | DISPLAY ; | 
|---|
| 83 | D DISPLAY^MAGDLB1 | 
|---|
| 84 | Q | 
|---|
| 85 | NEWCASE ; | 
|---|
| 86 | Q:'$D(XX(0)) | 
|---|
| 87 | Q:'$D(XX(ITEM,1)) | 
|---|
| 88 | S MAGDY=$G(XX(ITEM,1))  ;W !,MAGDY | 
|---|
| 89 | I MAGDY="" Q | 
|---|
| 90 | S NEWDFN=MAGPAT,NEWNME=$P(MAGDY,"^",2),NEWSSN=$P(MAGDY,"^",3) | 
|---|
| 91 | S NEWCAS=$P(MAGDY,"^",1),NEWPROC=$P(MAGDY,"^",5),NEWDTI=$P(MAGDY,"^",4) | 
|---|
| 92 | S NEWPIEN=$P(MAGDY,"^",6),MAGDIMG=$P(MAGDY,"^",7),MEDFILE=$P(MAGDY,"^",8) | 
|---|
| 93 | Q | 
|---|
| 94 | CHK ;remove any punctuation before doing comparison on SSN | 
|---|
| 95 | ;stop on 1st check. | 
|---|
| 96 | N OLD,I | 
|---|
| 97 | Q:MAGDY="" | 
|---|
| 98 | S OLD="" F I=1:1:$L(PID) I $E(PID,I)?1AN S OLD=OLD_$E(PID,I) | 
|---|
| 99 | I NEWSSN'=OLD D  Q | 
|---|
| 100 | . S MSG="Social Security numbers do not match. Update?" | 
|---|
| 101 | I NEWNME'=PAT D | 
|---|
| 102 | . S MSG="Patient names do not match. Update?" | 
|---|
| 103 | ;Finally the problem is with the case number/DICOM ID | 
|---|
| 104 | S MSG="DICOM ID number is different. Update?" | 
|---|
| 105 | Q | 
|---|
| 106 | NEWDIS ; | 
|---|
| 107 | D NEWDIS^MAGDLB1 | 
|---|
| 108 | Q | 
|---|
| 109 | UPDT ; | 
|---|
| 110 | ;S OUT=1 W !,"Will change the following: " D NEWDIS | 
|---|
| 111 | W !,"Are you sure you want to CORRECT?" S %=2 D YN^DICN | 
|---|
| 112 | I %=-1!(%=2) S OUT=1 Q | 
|---|
| 113 | W !,"Updating the file." | 
|---|
| 114 | S ^MAGD(2006.575,MAGIEN,"FIXD")="1^"_NEWDFN_"^"_NEWNME_"^"_NEWSSN_"^"_NEWCAS_"^"_NEWDTI_"^^^"_NEWPIEN W "." | 
|---|
| 115 | S ^MAGD(2006.575,MAGIEN,"FIXPR")=NEWPIEN_"^"_NEWPROC_"^"_$G(MAGDIMG)_"^"_MEDFILE W "." | 
|---|
| 116 | S MACHID=$S(MACHID="":"A",1:MACHID)  ;Server ID | 
|---|
| 117 | S ^MAGD(2006.575,"AFX",MACHID,MAGIEN)="" W "." | 
|---|
| 118 | Q | 
|---|
| 119 | SETDEL ;Entry to be deleted | 
|---|
| 120 | D SETDEL^MAGDLB1 | 
|---|
| 121 | Q | 
|---|
| 122 | ASKWHCH ;More than one patient found with same name | 
|---|
| 123 | S MAGPAT="" | 
|---|
| 124 | N ITEM | 
|---|
| 125 | Q:'$D(JJ(0)) | 
|---|
| 126 | S ITEM=$$DISPLAY^MAGDMEDL(.JJ) | 
|---|
| 127 | I ITEM S MAGPAT=$P(JJ(+ITEM,1),"^",3) | 
|---|
| 128 | Q | 
|---|