Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DVBCTPDF

DVBCTPDF.m

Go to the documentation of this file.
DVBCTPDF ;ALB/BG/CP/JD - CAPRI XML RPCS; FEB 6, 2023@16:20 ; 3/19/25 10:47am
 ;;2.7;AMIE;**252,254**;Apr 10, 1995;Build 41
 ; Per VHA Directive 6402 this routine should not be modified
 ; Reference to $$NOW^XLFDT and $$FMTE^XLFDT in ICR #10103
 Q
 ;
 ;Added Acceptable Clinical Evidence (ACE) to the list of returned items for CAPRI-13939.  JD - 10/3/24
 ;Updating to store Save Message, Version, and User CAPRI-11245 CP 6/21/24
 ;Made changes for CAPRI-11238.  JD - 6/19/24
 ;Made changes for CAPRI-11207.  JD - 6/13/24.
 ;Made changes for CAPRI-10057.  JD - 5/1/24.
FAILPDF(DVBPDF,DVBIEN,DVBCT) ; CAPRI-17770 CP 4/3/25
 ;;RPC DVBA CAPRI GET DBQ PDF pulls latest version of single Exam, noneditable 
 ;;Routine locks exam not worksheet
 N DVBABCNT,DVBFPDF,DVBNCT,DVBABIEN,DVBSV,DVBEXCT,DVBEXNM,DVBLSTNM
 K ^TMP("DVBAPDF",$J)
 S DVBEXCT=0
 S DVBEXNM=$G(^DVB(396.17,DVBIEN,14,DVBCT,2))
 S DVBSEQ=$P($G(^DVB(396.17,DVBIEN,1,0)),U,3)
 F DVBI=1:1:DVBSEQ Q:DVBEXCT'=0  D 
 . S DVBLSTNM=$P($G(^DVB(396.17,DVBIEN,1,DVBI,0)),U,2)
 . I DVBLSTNM=DVBEXNM S DVBEXCT=DVBI
 ;Next two lines added for CAPRI-10057.
 S DVBSV=$P($G(^DVB(396.17,DVBIEN,1,DVBEXCT,0)),U,3)  ;Get the latest save number for the given exam.
 I '$G(DVBSV) S DVBPDF="" Q
 ;
 S DVBABCNT=1,DVBABIEN=0,DVBNCT=0
 S DVBRTN=$$LOCK(DVBIEN,DVBSV) I DVBRTN=0 S DVBPDF="1^LOCKED RECORD" Q
 ;In the following 2 lines replaced 14,DVBCT,7 with 15,DVBSV,2.  CAPRI-10057
 F  S DVBABIEN=$O(^DVB(396.17,DVBIEN,15,DVBSV,2,DVBABIEN)) Q:'DVBABIEN  D
 .S DVBFPDF=$G(^DVB(396.17,DVBIEN,15,DVBSV,2,DVBABCNT,0))
 .I DVBABCNT=1 S DVBFPDF="1"_U_DVBFPDF
 .S DVBABCNT=DVBABCNT+1,DVBNCT=DVBNCT+1 M ^TMP("DVBAPDF",$J,DVBNCT)=DVBFPDF
 .Q
 S DVBPDF=$NA(^TMP("DVBAPDF",$J))
 D UNLOCK(DVBIEN,DVBSV)
 Q
LOCK(DVBIEN,DVBSV) ;
 L +^DVB(396.17,DVBIEN,15,DVBSV,2):$G(DILOCKTM)
 S DVBRTN=$T
 Q DVBRTN
UNLOCK(DVBIEN,DVBSV) ;
 L -^DVB(396.17,DVBIEN,15,DVBSV,2)
 Q
PDFRTN(DVBRTN,DVBARRAY) ; 
 ;;RPC DVBA CAPRI GET EXAM PDF used to pull PDF details, Exam can be edited.
 ;;Worksheet is locked before this call
 N DVBIEN,DVBTAB,DVBCT,DVBPTR,DVBNM,DVBTABIO,DVBPDF,DVBCNT,DVBAIEN
 K ^TMP("DVBAPDFEDIT",$J)
 I '$D(DVBARRAY) S DVBRTN="0^MISSING DATA" Q
 S DVBIEN=$P(DVBARRAY,U),DVBCNT=1
 S DVBNM=$P($G(DVBARRAY),U,2) I DVBNM="" Q
 S DVBAIEN=0 F  S DVBAIEN=$O(^DVB(396.17,DVBIEN,1,DVBAIEN)) Q:DVBAIEN=""  D
 .I $P($G(^DVB(396.17,DVBIEN,1,DVBAIEN,0)),"^",2)'=DVBNM Q
 .S DVBPTR=$P($G(^DVB(396.17,DVBIEN,1,DVBAIEN,0)),"^",3) I DVBPTR=0 Q
 .;;CAPRI-11245 CP 6/21/24
 .S DVBTAB=$P($P($G(^DVB(396.17,DVBIEN,15,DVBPTR,1)),"^",3),"|",1)
 .S DVBTABIO=DVBAIEN_U_DVBTAB_U_DVBNM
 .S DVBCNT=DVBCNT+1 M ^TMP("DVBAPDFEDIT",$J,DVBCNT)=DVBTABIO
 .S DVBCT=0 F  S DVBCT=$O(^DVB(396.17,DVBIEN,15,DVBPTR,2,DVBCT)) Q:DVBCT=""  D
 ..S DVBPDF=$G(^DVB(396.17,DVBIEN,15,DVBPTR,2,DVBCT,0))
 ..S DVBCNT=DVBCNT+1 M ^TMP("DVBAPDFEDIT",$J,DVBCNT)=DVBPDF
 ..Q
 S DVBRTN=$NA(^TMP("DVBAPDFEDIT",$J))
 Q
PDFEXAM(DVBRTN,DVBIEN) ; 
 ;Added DVBACE to the list for CAPRI-13939.
 ;RPC DVBA CAPRI GET WORKSHEET
 N DVBACE,DVBCT,DVBSTAT,DVBPT,DVBAUTH,DVBUPD,DVBVHA,DVBIEPD,DVBPDF,DVBCNT
 ;Added DVBWOI and DVBWON to the list for CAPRI-11238.
 N DVBAUTHNM,DVBTRANSID,DVBTRANSNM,DVBPTNM,DVBLOCK,DVBWOI,DVBWON,DVBSSN
 K ^TMP("DVBAPDFLST",$J)
 I '$D(DVBIEN) S DVBRTN="0^MISSING DATA" Q
 ;BG CAPRI-8883 added lock
 S DVBSTAT=$$GET1^DIQ(396.17,DVBIEN,"11","I")
 S DVBLOCK=$S(DVBSTAT="A":"L",DVBSTAT="S":"L",DVBSTAT="P":"L",DVBSTAT="D":"L",1:"U")
 I DVBLOCK="L" D LOCKUNLOCK^DVBUTIL(.DVBLRTN,DVBIEN,"L")
 I $G(DVBLRTN)["-1" M ^TMP("DVBAPDFLST",$J,1)=DVBLRTN S DVBRTN=$NA(^TMP("DVBAPDFLST",$J)) Q
 S DVBPT=$$GET1^DIQ(396.17,DVBIEN,".01","I")
 ;;Adding SSN to return CP 1-28-25 CAPRI-16034
 S DVBSSN=$$GET1^DIQ(2,DVBPT,".09","I")
 S DVBPTNM=$$GET1^DIQ(396.17,DVBIEN,".01","E")
 S DVBAUTH=$$GET1^DIQ(396.17,DVBIEN,"2","I")
 S DVBAUTHNM=$$GET1^DIQ(396.17,DVBIEN,"2","E")
 S DVBUPD=$$GET1^DIQ(396.17,DVBIEN,"4","I")
 S DVBVHA=$$GET1^DIQ(396.17,DVBIEN,"25","I")
 S DVBIEPD=$$GET1^DIQ(396.17,DVBIEN,"12","I")
 S DVBTRANSID=$$GET1^DIQ(396.17,DVBIEN,"10","I")
 S DVBTRANSNM=$$GET1^DIQ(396.17,DVBIEN,"10","E")
 ;Next 2 lines added for CAPRI-11238.
 S DVBWOI=$$GET1^DIQ(396.17,DVBIEN,"13","I")  ;Worksheet originator IEN
 S DVBWON=$$GET1^DIQ(396.17,DVBIEN,"13","E")  ;Worksheet originator name
 ;Next line added for CAPRI-13939.
 S DVBACE=$$GET1^DIQ(396.17,DVBIEN,"1","I")   ;Acceptable Clinical Evidence (ACE)
 I $G(DVBTRANSID)="" S DVBTRANSID="N/A",DVBTRANSNM="N/A"
 S DVBCNT=1
 ;Added the Worksheet Originator (DVBWOI,DVBWON) to the return list for CAPRI-11238.
 ;Added Acceptable Clinical Evidence (ACE) to the return list for CAPRI-13939.
 ;;Adding SSN to return CP 1-28-25 CAPRI-16034
 S DVBPDF=DVBIEN_U_DVBSTAT_U_DVBPT_U_DVBPTNM_U_DVBAUTH_U_DVBAUTHNM_U_DVBUPD_U_DVBVHA_U_DVBIEPD_U_DVBTRANSID_U_DVBTRANSNM_U_DVBWOI_U_DVBWON_U_DVBACE_U_DVBSSN
 M ^TMP("DVBAPDFLST",$J,DVBCNT)=DVBPDF
 S DVBAIEN=0 F  S DVBAIEN=$O(^DVB(396.17,DVBIEN,1,DVBAIEN)) Q:DVBAIEN=""  D
 .S DVBPTR=$P($G(^DVB(396.17,DVBIEN,1,DVBAIEN,0)),"^",3) I DVBPTR="" Q 
 .S DVBNM=$P($G(^DVB(396.17,DVBIEN,1,DVBAIEN,0)),"^",2) I DVBNM["*DEL*" Q
 .;;CAPRI-11245 CP 6/21/24
 .S DVBTAB=$P($P($G(^DVB(396.17,DVBIEN,15,DVBPTR,1)),"^",3),"|",1)
 .S DVBPDF=DVBAIEN_U_DVBTAB_U_DVBNM
 .S DVBCNT=DVBCNT+1 M ^TMP("DVBAPDFLST",$J,DVBCNT)=DVBPDF
 S DVBRTN=$NA(^TMP("DVBAPDFLST",$J))
 Q
CREATE(DVBRTN,DVBDATA,DVBEXAMLIST) ;  
 ;Updates to remove validation Errors 2-19-25 CP CAPRI-16472
 ;RPC DVBA CAPRI CREATE WORKSHEET
 N DVBPATIENT,DVBAUTHOR,DVBIEPDVER,DVBDBQREF,DVBTRANSCRIB,DVBFORMNAME,DVBDTTM,DVBEXAMCNT
 N DVBEXAMSEQ,DVBEXAMNAME,DVBIEN,DVBI,DVBRTDAT,DVBCKDAT
 S DVBPATIENT=$G(DVBDATA(1))
 I DVBPATIENT="" S DVBRTN="-1^Missing Patient Details" Q
 S DVBAUTHOR=$G(DVBDATA(2))
 I DVBAUTHOR="" S DVBRTN="-1^Missing Author Details" Q
 S DVBIEPDVER=$G(DVBDATA(3))
 S DVBDBQREF=$G(DVBDATA(4))
 S DVBTRANSCRIB=$G(DVBDATA(5))
 S DVBFORMNAME=$G(DVBDATA(6))
 I $G(DVBEXAMLIST(1))="" S DVBRTN="-1^Invalid Exam Name/List" Q
 S (DVBRTDAT,DVBCKDAT)=""
 ;
 S DVBDTTM=$$NOW^XLFDT
 K DIC,DIE,DA,DR,X,Y,DO
 S DR="2////"_DVBAUTHOR_";3////"_DVBDTTM_";4////"_DVBDTTM_";5////2800101"_";9////"_DVBFORMNAME
 S DR=DR_";10////"_DVBTRANSCRIB_";11////D"_";12////"_DVBIEPDVER_";19////N"_";25////"_DVBDBQREF_";13////"_DVBAUTHOR
 ;S DR=DR_";32////"_$S($$GET^XPAR("PKG","DVBAB CAPRI EMS TOGGLE",1,"I")=2:"E",1:"C") ;CAPRI-19608:NGC
 S DIC("DR")=DR
 S DIC=396.17,DIC(0)="Z",X=DVBPATIENT
 D FILE^DICN
 I Y=-1 K DIC S DVBRTN="-1^New Entry not Built" Q
 S DA=$P($G(Y),U,1)
 S DVBRTDAT=$G(Y(0))
 S DVBCKDAT=DVBPATIENT_U_DVBAUTHOR_U_DVBDTTM_U_DVBDTTM_U_"2800101"_U_DVBAUTHOR
 I DVBRTDAT="",DVBRTDAT'=DVBCKDAT S DIK="^DVB(396.17,",DA=$G(DA) D ^DIK S DVBRTN="-1^Details not Saved" Q
 S DVBRTN(0)=DA
 K DIK,DIC,DIE,DA,DR,X,Y
 ;
 ;
 N DVBERR
 S (DVBEXAMCNT,DVBEXAMSEQ)=""
 S DVBEXAMCNT=$O(DVBEXAMLIST(DVBEXAMCNT),-1)
 F DVBI=1:1:DVBEXAMCNT Q:$G(DVBEXAMLIST(DVBI))=""  D
 . S DVBEXAMNAME=$G(DVBEXAMLIST(DVBI))
 . S DVBIEN=$G(DVBRTN(0))
 . S DVBEXAMSEQ(DVBI)=DVBI_"^"_DVBEXAMNAME_"^0"
 . K DIC,DIE,DA,DR,DLAYGO,X,Y
 . S DA(1)=DVBIEN,(DA,X)=DVBI
 . S (DLAYGO,DIC)="^DVB(396.17,"_DA(1)_",1,",DIC(0)="L"
 . D ^DIC
 . S DVBRTN(DVBI)=DVBI_":"_DVBEXAMNAME
 . Q 
 D WP^DIE(396.17,DVBIEN_",",6,"K","DVBEXAMSEQ","DVBERR")
 I $D(DVBERR) S DVBRTN="-1^Data Not Saved" Q
 ;BG CAPRI-8883 added lock
 D LOCKUNLOCK^DVBUTIL(.DVBLRTN,DVBIEN,"L")
 I $G(DVBLRTN)["-1" S DVBRTN=DVBLRTN Q
 K DIC,DIE,DA,DR,DLAYGO,X,Y
 Q
PDFSAVE(DVBRTN,DVBIEN,DVBSEQ,DVBEXAMNAME,DVBPDFDATA,DVBTABIO,DVBSMSG,DVBVER) ;
 ;RPC: DVBA CAPRI SAVE EXAM PDF
 ;Updates CAPRI-16627 CP 5/10/25
 N DVBDTTM,DVBSAVESEQ,DVBNEXTSEQ,DVBPRESAVE,DVBPRENAME,DVBAFDA,DVBLRTN,DVBPN2,DVBEN2,DVBSAVECMT
 I $D(DVBSMSG)=0 S DVBSMSG=""
 I $D(DVBVER)=0 S DVBVER=""
 K DIC,DIE,DA,DR,DLAYGO,X,Y
 N DVBERR
 ;;CAPRI-11245 CP 6/21/24
 S DVBSAVECMT=DVBTABIO_"|"_DVBSMSG_"|"_DVBVER_"|"_DUZ
 S DVBDTTM=$$NOW^XLFDT
 S DVBSAVESEQ=$P($G(^DVB(396.17,DVBIEN,15,0)),"^",3)
 S DA(1)=DVBIEN,(DA,X)=DVBSAVESEQ+1
 ;;Adding Z to correct xref CP
 S (DLAYGO,DIC)="^DVB(396.17,"_DA(1)_",15,",DIC(0)="LZ"
 S DIC("DR")=".01////"_DVBSEQ_";.02////"_DVBDTTM_";.03////"_DVBEXAMNAME_";.04////"_DVBSAVECMT
 D FILE^DICN
 I Y=-1 K DIC S DVBRTN="-1^New version not saved" Q
 S DVBNEXTSEQ=+Y
 I $$GET1^DIQ(396.1727,DVBNEXTSEQ_","_DVBIEN,.02,"I")'=DVBDTTM S DVBRTN="-1^Sequence, Date/Time, Exam Name data Not Saved" Q
 D WP^DIE(396.1727,DVBNEXTSEQ_","_DVBIEN_",",.05,"K","DVBPDFDATA","DVBERR")
 I $D(DVBERR) S DVBRTN="-1^PDF data not saved" Q
 S DVBAFDA(396.17,DVBIEN_",",4)=DVBDTTM
 K DVBERR D FILE^DIE(,"DVBAFDA","DVBERR")
 I $D(DVBERR) S DVBRTN="-1^Date/Time data not saved" Q
 S DVBPRESAVE=$G(^DVB(396.17,DVBIEN,1,DVBSEQ,0),"")
 I DVBPRESAVE="" S DVBRTN="-1^Incorrect Seq Number" Q
 S DVBPRENAME=$P(DVBPRESAVE,"^",2)
 ;;Updating to not compare version CAPRI-10405 CP
 S DVBPN2=$$NAMEUPD^DVBCTPD2(DVBPRENAME)
 S DVBEN2=$$NAMEUPD^DVBCTPD2(DVBEXAMNAME)
 I DVBPN2'=DVBEN2 S DVBRTN="-1^Mismatch Exam Name" Q
 I DVBPN2=DVBEN2 S ^DVB(396.17,DVBIEN,1,DVBSEQ,0)=DVBSEQ_"^"_DVBEXAMNAME_"^"_DVBNEXTSEQ,DVBRTN="1"
 Q
PASCALCHK(DVBRTN,DVBIEN) ;  
 ;RPC DVBA CAPRI PASCAL CHECK
 I '$D(DVBIEN) S DVBRTN="-1^MISSING DATA" Q
 I $D(^DVB(396.17,DVBIEN,3)) S DVBRTN="P" Q
 I '$D(^DVB(396.17,DVBIEN,3)) S DVBRTN="C"
 Q
PDFLST(DVBRTN,DVBIEN) ;
 ;RPC: DVBA CAPRI GET WORKSHEET LIST
 ;Update for CMT/PASCAL flag 4-22-24 CP CAPRI 9826
 ;Added DVBWON to the list for CAPRI-11238.
 ;Update for VHA Internal DBQ Referral DVBIR RJA 250401 CAPRI-17618
 N DVBNCT,DVBNNCT,DVBAUTH,DVBSTAT,DVBNAME,DVBNM,DVBPT,DVBPIEN,DVBAIEN,DVBWSIEN,DVBSDT,DVBPDF,DVBNFLG,DVBGFLG,DVBXFLG,DVBCPFLG,DVBWON,DVBIR
 K ^TMP("DVBPDFLST",$J) S DVBNCT=0
 I '$D(DVBIEN) S DVBRTN="0^MISSING DATA" Q
 I $D(^DVB(396.17,"B",DVBIEN))<10 S DVBRTN="0^NO WORKSHEETS" Q
 S DVBWSIEN=0 F  S DVBWSIEN=$O(^DVB(396.17,"B",DVBIEN,DVBWSIEN)) Q:DVBWSIEN=""  D
 .S DVBNCT=DVBNCT+1
 .S DVBAUTH=$$GET1^DIQ(396.17,DVBWSIEN,"2","E")
 .S DVBNAME=$$GET1^DIQ(396.17,DVBWSIEN,"9","I")
 .S DVBSTAT=$$GET1^DIQ(396.17,DVBWSIEN,"11","I")
 .S DVBPT=$$GET1^DIQ(396.17,DVBWSIEN,".01","E")
 .S DVBSDT=$$GET1^DIQ(396.17,DVBWSIEN,"5","E")
 .S DVBNFLG=$$GET1^DIQ(396.17,DVBWSIEN,"19","E")
 .S DVBGFLG=$$GET1^DIQ(396.17,DVBWSIEN,"20","E")
 .S DVBXFLG=$$GET1^DIQ(396.17,DVBWSIEN,"21","E")
 .;Next line added for CAPRI-11238.
 .S DVBWON=$$GET1^DIQ(396.17,DVBWSIEN,"13","E")  ;Worksheet originator name
 .S DVBIR=$$GET1^DIQ(396.17,DVBWSIEN,"25","E") ;VHA Internal DBQ Referral
 .S DVBCPFLG=$S($D(^DVB(396.17,DVBWSIEN,3))>9:"P",1:"C")
 .S DVBPDF=$G(DVBWSIEN)_U_$G(DVBPT)_U_$G(DVBNAME)_U_$G(DVBSDT)_U_$G(DVBAUTH)_U_$G(DVBSTAT)_U_$G(DVBNFLG)_U_$G(DVBGFLG)_U_$G(DVBXFLG)_U_$G(DVBCPFLG)_U_$G(DVBWON)_U_$G(DVBIR)
 .S ^TMP("DVBPDFLST",$J,DVBNCT)=DVBPDF
 .S DVBAIEN=0 F  S DVBAIEN=$O(^DVB(396.17,DVBWSIEN,1,DVBAIEN)) Q:DVBAIEN=""  D
 ..S DVBPTR=$P($G(^DVB(396.17,DVBWSIEN,1,DVBAIEN,0)),"^",3) I DVBPTR="" Q 
 ..S DVBNM=$P($G(^DVB(396.17,DVBWSIEN,1,DVBAIEN,0)),"^",2) I DVBNM["*DEL*" Q
 ..;;CAPRI-11245 CP 6/21/24
 ..S DVBTAB=$P($P($G(^DVB(396.17,DVBWSIEN,15,DVBPTR,1)),"^",3),"|",1)
 ..S DVBPDF=DVBAIEN_U_DVBTAB_U_DVBNM
 ..S DVBNCT=DVBNCT+1 M ^TMP("DVBPDFLST",$J,DVBNCT)=DVBPDF
 S DVBRTN=$NA(^TMP("DVBPDFLST",$J))
 Q
DELCHECK(DVBRTN,DVBIEN) ; 
 ;RPC DVBA CAPRI DELETE CHECK
 ;CAPRI-16627 CP 4-11-25 
 ;Added DVBWOI to the list for CAPRI-11238.
 N DVBAUTH,DVBTRS,DVBKY,DVBWOI,DVBFLAG
 S DVBFLAG=0
 I '$D(DVBIEN) S DVBRTN="-1^MISSING IEN" Q
 ;BG CAPRI-8883 added lock
 D LOCKUNLOCK^DVBUTIL(.DVBLRTN,DVBIEN,"L")
 I $G(DVBLRTN)["-1" S DVBRTN=DVBLRTN Q
 D OWNSKEY^XUSRB(.DVBKY,"DVBAB CPWM REVIEWER",DUZ)
 I $G(DVBKY(0)) S DVBFLAG=1
 I $P($G(^VA(200,DUZ,0)),U,4)="@" S DVBFLAG=1
 S DVBAUTH=$$GET1^DIQ(396.17,DVBIEN,"2","I")
 S DVBTRS=$$GET1^DIQ(396.17,DVBIEN,"10","I")
 S DVBWOI=$$GET1^DIQ(396.17,DVBIEN,"13","I")
 ;Added the Worksheet Originator IEN (DVBWOI) check for CAPRI-11238.
 I (DVBFLAG'=1),(DUZ'=DVBAUTH),(DUZ'=DVBTRS),(DUZ'=DVBWOI) S DVBRTN="-1^Unable to delete, User is not Document Manager, Transcriber or Worksheet Originator" Q
 S DVBRTN=1
 Q
DELETE(DVBRTN,DVBIEN) ; 
 ;RPC DVBA CAPRI DELETE WORKSHEET
 N FDA,DVBERR
 I '$D(DVBIEN) S DVBRTN="-1^MISSING IEN" Q
 S FDA(396.17,DVBIEN_",",.01)="@"
 D FILE^DIE("","FDA","DVBERR")
 I '$D(DVBERR) S DVBRTN=1
 I $D(DVBERR) S DVBRTN="-1^Unable to delete"
 Q