[613] | 1 | RARTE7 ;HISC/SM continuation - Delete a Report, Outside Rpt misc;1/31/08 10:44
|
---|
| 2 | ;;5.0;Radiology/Nuclear Medicine;**56**;Mar 16, 1998;Build 3
|
---|
| 3 | ;Supported IA #2053 NOW^XLFDT, FILE^DIE, UPDATE^DIE
|
---|
| 4 | ;Supported IA #2052 GET1^DID
|
---|
| 5 | ;Supported IA #2055 ROOT^DILFD
|
---|
| 6 | Q
|
---|
| 7 | MARKDEL ; set field 5 to "X" to mark rpt as deleted
|
---|
| 8 | ; also update activity log, send report deletion bulletin, store then delete
|
---|
| 9 | ; associated DX, Staff, Resident data
|
---|
| 10 | N DA,DIK,RA1,RA2,RAA,RAFDA,RAIEN2,RAIENDX,RAIENL,RACLOAK
|
---|
| 11 | N RAMEMARR,RAMSG,RAOUT,RAPRTSET,RASAVE,RAX,RA7003
|
---|
| 12 | ;
|
---|
| 13 | ;PART 1 - mark report as deleted
|
---|
| 14 | ;
|
---|
| 15 | S RASAVE=$P(^RARPT(RAIEN,0),U,5) ;save current rpt status
|
---|
| 16 | S RAFDA(74,RAIEN_",",5)="X" ;change rpt status
|
---|
| 17 | D FILE^DIE("","RAFDA")
|
---|
| 18 | K RAFDA
|
---|
| 19 | ;
|
---|
| 20 | ;PART 2 - add new entry to ACTIVITY LOG and store primary data
|
---|
| 21 | ;
|
---|
| 22 | S RA7003=^RADPT(RADFN,"DT",RADTI,"P",RACNI,0)
|
---|
| 23 | S RAIENL="+1,"_RAIEN_","
|
---|
| 24 | S RAFDA(74.01,RAIENL,.01)=+$E($$NOW^XLFDT(),1,12)
|
---|
| 25 | S RAFDA(74.01,RAIENL,2)="X"
|
---|
| 26 | S RAFDA(74.01,RAIENL,3)=$G(DUZ)
|
---|
| 27 | S RAFDA(74.01,RAIENL,4)=RASAVE ;store before-delete rpt status
|
---|
| 28 | S RAFDA(74.01,RAIENL,5)=$P(RA7003,U,13) ; store Prim DX code
|
---|
| 29 | S RAFDA(74.01,RAIENL,7)=$P(RA7003,U,15) ; store Prim Staff
|
---|
| 30 | S RAFDA(74.01,RAIENL,9)=$P(RA7003,U,12) ; store Prim Resident
|
---|
| 31 | D UPDATE^DIE(,"RAFDA","RAOUT","RAMSG")
|
---|
| 32 | W:$D(RAMSG("DIERR")) !!,"Could not update deleted Report's Activity Log."
|
---|
| 33 | K RAFDA
|
---|
| 34 | ;
|
---|
| 35 | ; store Secondary DXs/Staff/Residents under this ACTIVITY LOG
|
---|
| 36 | ; if printset, no need to store each case's sec DX, they should be same
|
---|
| 37 | Q:'RAOUT(1) ;no record set in 74.01
|
---|
| 38 | S RAIEN2=RAOUT(1)
|
---|
| 39 | ;
|
---|
| 40 | ;PART 3 - send report deletion bulletin
|
---|
| 41 | ;
|
---|
| 42 | D CLOAK^RABUL3 ; requires RAIEN and RAIEN2
|
---|
| 43 | ;
|
---|
| 44 | ;PART 4 - store secondary DX, Staff, Resident data
|
---|
| 45 | ;
|
---|
| 46 | ;don't need separate logic for printset for storing identical data
|
---|
| 47 | F RAFLD=5,7,9 D SET7401(RAFLD)
|
---|
| 48 | ;
|
---|
| 49 | ;PART 5 - remove Prim. and Sec. DX, Staff, Resident from case record
|
---|
| 50 | ;
|
---|
| 51 | D EN2^RAUTL20(.RAMEMARR) ; is case part of a printset?
|
---|
| 52 | G:RAPRTSET PSET
|
---|
| 53 | ;
|
---|
| 54 | ; single case
|
---|
| 55 | ;
|
---|
| 56 | ; delete primaries
|
---|
| 57 | S RAFDA(70.03,RACNI_","_RADTI_","_RADFN_",",13)="@" ;Prim. DX
|
---|
| 58 | S RAFDA(70.03,RACNI_","_RADTI_","_RADFN_",",15)="@" ;Prim. Staff
|
---|
| 59 | S RAFDA(70.03,RACNI_","_RADTI_","_RADFN_",",12)="@" ;Prim. Resident
|
---|
| 60 | D FILE^DIE("","RAFDA")
|
---|
| 61 | K RAFDA
|
---|
| 62 | ;
|
---|
| 63 | ; delete secondaries
|
---|
| 64 | F RASUB=70.14,70.11,70.09 D KILSEC(RASUB,RACNI)
|
---|
| 65 | Q
|
---|
| 66 | ;
|
---|
| 67 | ; cases from printset
|
---|
| 68 | ;
|
---|
| 69 | PSET ;delete primary and secondary data
|
---|
| 70 | S RA1=0
|
---|
| 71 | F S RA1=$O(RAMEMARR(RA1)) Q:RA1="" D
|
---|
| 72 | .; delete primary from 70.03
|
---|
| 73 | .S RAFDA(70.03,RA1_","_RADTI_","_RADFN_",",13)="@" ;Prim. DX
|
---|
| 74 | .S RAFDA(70.03,RA1_","_RADTI_","_RADFN_",",15)="@" ;Prim. Staff
|
---|
| 75 | .S RAFDA(70.03,RA1_","_RADTI_","_RADFN_",",12)="@" ;Prim. Resident
|
---|
| 76 | .D FILE^DIE("","RAFDA")
|
---|
| 77 | .K RAFDA
|
---|
| 78 | .F RASUB=70.14,70.11,70.09 D KILSEC(RASUB,RA1)
|
---|
| 79 | Q
|
---|
| 80 | KILSEC(RAF2,RAC1) ;kill secondary data
|
---|
| 81 | ;RAF2 subfile number from file 70's secondaries
|
---|
| 82 | ;RAC1 ien for subfile 70.03
|
---|
| 83 | N RAA,RAROOT
|
---|
| 84 | K DA,DIK
|
---|
| 85 | S RAIENS=1_","_RAC1_","_RADTI_","_RADFN_","
|
---|
| 86 | S RAROOT=$$ROOT^DILFD(RAF2,RAIENS,1) ; closed root
|
---|
| 87 | M RAA=@RAROOT
|
---|
| 88 | Q:$O(RAA(0))'>0 ;no secondaries
|
---|
| 89 | D DA^DILF(RAIENS,.DA) ;get the DA array
|
---|
| 90 | S DIK=$$ROOT^DILFD(RAF2,RAIENS)
|
---|
| 91 | S RA2=0
|
---|
| 92 | F S RA2=$O(RAA(RA2)) Q:'RA2 S DA=RA2 D ^DIK
|
---|
| 93 | K DIK
|
---|
| 94 | Q
|
---|
| 95 | SET7401(X) ; use this for DX, Staff, Resident secondaries
|
---|
| 96 | ; set activity log's subfiles to store any secondaries
|
---|
| 97 | K RAFDA,RAMSG,RAA
|
---|
| 98 | ; X is the Field number from subfile 74.01:
|
---|
| 99 | ; 5 = BEFORE DELETION PRIM. DX CODE
|
---|
| 100 | ; 7 = BEFORE DELETION PRIM. STAFF
|
---|
| 101 | ; 9 = BEFORE DELETION PRIM. RESIDENT
|
---|
| 102 | ;
|
---|
| 103 | ; RAF1 = subfile number from file 74's activity log
|
---|
| 104 | ; RAF2 = subfile number from file 70's secondaries
|
---|
| 105 | ; RAF3 = subfile number pointed to from file 70's secondaries
|
---|
| 106 | ;
|
---|
| 107 | S RAF2=$S(X=5:70.14,X=7:70.11,X=9:70.09,1:"") Q:RAF2=""
|
---|
| 108 | S RAIENS=1_","_RACNI_","_RADTI_","_RADFN_","
|
---|
| 109 | S RAROOT=$$ROOT^DILFD(RAF2,RAIENS,1) ; closed root, file 70's secondaries
|
---|
| 110 | M RAA=@RAROOT
|
---|
| 111 | Q:$O(RAA(0))'>0 ; no secondaries
|
---|
| 112 | ;
|
---|
| 113 | S RAF1=$S(X=5:74.16,X=7:74.18,X=9:74.19,1:"") Q:RAF1=""
|
---|
| 114 | S RAF3=$$GET1^DID(RAF2,.01,"","POINTER")
|
---|
| 115 | ; extract file number from RAF3
|
---|
| 116 | S RAF3=$TR(RAF3,$TR(RAF3,"0123456789."))
|
---|
| 117 | ;
|
---|
| 118 | ; store Secondary DXs
|
---|
| 119 | S RA1=0
|
---|
| 120 | S RAIENDX="+2,"_RAIEN2_","_RAIEN_","
|
---|
| 121 | F S RA1=$O(RAA(RA1)) Q:'RA1 S RAX=$G(RAA(RA1,0)) D:RAX
|
---|
| 122 | .S RAFDA(RAF1,RAIENDX,.01)=RAX
|
---|
| 123 | .D UPDATE^DIE(,"RAFDA",,"RAMSG")
|
---|
| 124 | .W:$D(RAMSG("DIERR")) !!,"Could not store ",$$GET1^DID(RAF2,.01,"","LABEL"),"'s value: ",$$GET1^DIQ(RAF3,RAX,.01)
|
---|
| 125 | .K RAFDA,RAMSG
|
---|
| 126 | .Q
|
---|
| 127 | Q
|
---|
| 128 | ANYDX(ARRAY) ; called from RARTE5
|
---|
| 129 | ; input ARRAY name to store all DXs for this case
|
---|
| 130 | ; output:
|
---|
| 131 | ; =1 if one or more diag codes
|
---|
| 132 | ; =0 if no diag code
|
---|
| 133 | ; ARRAY() stores diag codes as merged from case
|
---|
| 134 | Q:'$D(RADFN)!('$D(RADTI))!('$D(RACNI))
|
---|
| 135 | K ARRAY
|
---|
| 136 | M ARRAY=^RADPT(RADFN,"DT",RADTI,"P",RACNI,"DX") ;Sec Diags
|
---|
| 137 | S ARRAY(9999,0)=$P(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0),U,13) ;Prim Diag
|
---|
| 138 | I $O(ARRAY(0)) Q 1
|
---|
| 139 | Q 0
|
---|
| 140 | ;
|
---|
| 141 | ALERT ; for Outside Report, ck if new/changed diags require alert
|
---|
| 142 | ; this is called from RARTE5 each time an outside report is edited
|
---|
| 143 | Q:'$D(RADFN)!('$D(RADTI))!('$D(RACNI))
|
---|
| 144 | ; set RASAVE() for OENOTE^RAUTL00
|
---|
| 145 | S RASAVE("RADFN")=RADFN,RASAVE("RADTI")=RADTI,RASAVE("RACNI")=RACNI
|
---|
| 146 | ;
|
---|
| 147 | N I
|
---|
| 148 | Q:(RANY1=0)&(RANY2=0) ;no diags before and after edit
|
---|
| 149 | S I=0
|
---|
| 150 | ; loop RAA2
|
---|
| 151 | F S I=$O(RAA2(I)) Q:'I K:RAA2(I,0)=$G(RAA1(I,0)) RAA2(I,0)
|
---|
| 152 | Q:'$O(RAA2(0))
|
---|
| 153 | S RAAB=0
|
---|
| 154 | S I=0 F S I=$O(RAA2(I)) Q:'I D
|
---|
| 155 | .I $D(^RA(78.3,+RAA2(I,0),0)),($P(^(0),U,4)="y") S RAAB=1
|
---|
| 156 | .Q
|
---|
| 157 | Q:'RAAB
|
---|
| 158 | S RAY3=$G(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0))
|
---|
| 159 | S X=RAY3 ; X is input to OENOTE
|
---|
| 160 | D OENOTE^RAUTL00
|
---|
| 161 | Q
|
---|