RARTE7 ;HISC/SM continuation - Delete a Report, Outside Rpt misc;1/31/08 10:44 ;;5.0;Radiology/Nuclear Medicine;**56**;Mar 16, 1998;Build 3 ;Supported IA #2053 NOW^XLFDT, FILE^DIE, UPDATE^DIE ;Supported IA #2052 GET1^DID ;Supported IA #2055 ROOT^DILFD Q MARKDEL ; set field 5 to "X" to mark rpt as deleted ; also update activity log, send report deletion bulletin, store then delete ; associated DX, Staff, Resident data N DA,DIK,RA1,RA2,RAA,RAFDA,RAIEN2,RAIENDX,RAIENL,RACLOAK N RAMEMARR,RAMSG,RAOUT,RAPRTSET,RASAVE,RAX,RA7003 ; ;PART 1 - mark report as deleted ; S RASAVE=$P(^RARPT(RAIEN,0),U,5) ;save current rpt status S RAFDA(74,RAIEN_",",5)="X" ;change rpt status D FILE^DIE("","RAFDA") K RAFDA ; ;PART 2 - add new entry to ACTIVITY LOG and store primary data ; S RA7003=^RADPT(RADFN,"DT",RADTI,"P",RACNI,0) S RAIENL="+1,"_RAIEN_"," S RAFDA(74.01,RAIENL,.01)=+$E($$NOW^XLFDT(),1,12) S RAFDA(74.01,RAIENL,2)="X" S RAFDA(74.01,RAIENL,3)=$G(DUZ) S RAFDA(74.01,RAIENL,4)=RASAVE ;store before-delete rpt status S RAFDA(74.01,RAIENL,5)=$P(RA7003,U,13) ; store Prim DX code S RAFDA(74.01,RAIENL,7)=$P(RA7003,U,15) ; store Prim Staff S RAFDA(74.01,RAIENL,9)=$P(RA7003,U,12) ; store Prim Resident D UPDATE^DIE(,"RAFDA","RAOUT","RAMSG") W:$D(RAMSG("DIERR")) !!,"Could not update deleted Report's Activity Log." K RAFDA ; ; store Secondary DXs/Staff/Residents under this ACTIVITY LOG ; if printset, no need to store each case's sec DX, they should be same Q:'RAOUT(1) ;no record set in 74.01 S RAIEN2=RAOUT(1) ; ;PART 3 - send report deletion bulletin ; D CLOAK^RABUL3 ; requires RAIEN and RAIEN2 ; ;PART 4 - store secondary DX, Staff, Resident data ; ;don't need separate logic for printset for storing identical data F RAFLD=5,7,9 D SET7401(RAFLD) ; ;PART 5 - remove Prim. and Sec. DX, Staff, Resident from case record ; D EN2^RAUTL20(.RAMEMARR) ; is case part of a printset? G:RAPRTSET PSET ; ; single case ; ; delete primaries S RAFDA(70.03,RACNI_","_RADTI_","_RADFN_",",13)="@" ;Prim. DX S RAFDA(70.03,RACNI_","_RADTI_","_RADFN_",",15)="@" ;Prim. Staff S RAFDA(70.03,RACNI_","_RADTI_","_RADFN_",",12)="@" ;Prim. Resident D FILE^DIE("","RAFDA") K RAFDA ; ; delete secondaries F RASUB=70.14,70.11,70.09 D KILSEC(RASUB,RACNI) Q ; ; cases from printset ; PSET ;delete primary and secondary data S RA1=0 F S RA1=$O(RAMEMARR(RA1)) Q:RA1="" D .; delete primary from 70.03 .S RAFDA(70.03,RA1_","_RADTI_","_RADFN_",",13)="@" ;Prim. DX .S RAFDA(70.03,RA1_","_RADTI_","_RADFN_",",15)="@" ;Prim. Staff .S RAFDA(70.03,RA1_","_RADTI_","_RADFN_",",12)="@" ;Prim. Resident .D FILE^DIE("","RAFDA") .K RAFDA .F RASUB=70.14,70.11,70.09 D KILSEC(RASUB,RA1) Q KILSEC(RAF2,RAC1) ;kill secondary data ;RAF2 subfile number from file 70's secondaries ;RAC1 ien for subfile 70.03 N RAA,RAROOT K DA,DIK S RAIENS=1_","_RAC1_","_RADTI_","_RADFN_"," S RAROOT=$$ROOT^DILFD(RAF2,RAIENS,1) ; closed root M RAA=@RAROOT Q:$O(RAA(0))'>0 ;no secondaries D DA^DILF(RAIENS,.DA) ;get the DA array S DIK=$$ROOT^DILFD(RAF2,RAIENS) S RA2=0 F S RA2=$O(RAA(RA2)) Q:'RA2 S DA=RA2 D ^DIK K DIK Q SET7401(X) ; use this for DX, Staff, Resident secondaries ; set activity log's subfiles to store any secondaries K RAFDA,RAMSG,RAA ; X is the Field number from subfile 74.01: ; 5 = BEFORE DELETION PRIM. DX CODE ; 7 = BEFORE DELETION PRIM. STAFF ; 9 = BEFORE DELETION PRIM. RESIDENT ; ; RAF1 = subfile number from file 74's activity log ; RAF2 = subfile number from file 70's secondaries ; RAF3 = subfile number pointed to from file 70's secondaries ; S RAF2=$S(X=5:70.14,X=7:70.11,X=9:70.09,1:"") Q:RAF2="" S RAIENS=1_","_RACNI_","_RADTI_","_RADFN_"," S RAROOT=$$ROOT^DILFD(RAF2,RAIENS,1) ; closed root, file 70's secondaries M RAA=@RAROOT Q:$O(RAA(0))'>0 ; no secondaries ; S RAF1=$S(X=5:74.16,X=7:74.18,X=9:74.19,1:"") Q:RAF1="" S RAF3=$$GET1^DID(RAF2,.01,"","POINTER") ; extract file number from RAF3 S RAF3=$TR(RAF3,$TR(RAF3,"0123456789.")) ; ; store Secondary DXs S RA1=0 S RAIENDX="+2,"_RAIEN2_","_RAIEN_"," F S RA1=$O(RAA(RA1)) Q:'RA1 S RAX=$G(RAA(RA1,0)) D:RAX .S RAFDA(RAF1,RAIENDX,.01)=RAX .D UPDATE^DIE(,"RAFDA",,"RAMSG") .W:$D(RAMSG("DIERR")) !!,"Could not store ",$$GET1^DID(RAF2,.01,"","LABEL"),"'s value: ",$$GET1^DIQ(RAF3,RAX,.01) .K RAFDA,RAMSG .Q Q ANYDX(ARRAY) ; called from RARTE5 ; input ARRAY name to store all DXs for this case ; output: ; =1 if one or more diag codes ; =0 if no diag code ; ARRAY() stores diag codes as merged from case Q:'$D(RADFN)!('$D(RADTI))!('$D(RACNI)) K ARRAY M ARRAY=^RADPT(RADFN,"DT",RADTI,"P",RACNI,"DX") ;Sec Diags S ARRAY(9999,0)=$P(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0),U,13) ;Prim Diag I $O(ARRAY(0)) Q 1 Q 0 ; ALERT ; for Outside Report, ck if new/changed diags require alert ; this is called from RARTE5 each time an outside report is edited Q:'$D(RADFN)!('$D(RADTI))!('$D(RACNI)) ; set RASAVE() for OENOTE^RAUTL00 S RASAVE("RADFN")=RADFN,RASAVE("RADTI")=RADTI,RASAVE("RACNI")=RACNI ; N I Q:(RANY1=0)&(RANY2=0) ;no diags before and after edit S I=0 ; loop RAA2 F S I=$O(RAA2(I)) Q:'I K:RAA2(I,0)=$G(RAA1(I,0)) RAA2(I,0) Q:'$O(RAA2(0)) S RAAB=0 S I=0 F S I=$O(RAA2(I)) Q:'I D .I $D(^RA(78.3,+RAA2(I,0),0)),($P(^(0),U,4)="y") S RAAB=1 .Q Q:'RAAB S RAY3=$G(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0)) S X=RAY3 ; X is input to OENOTE D OENOTE^RAUTL00 Q