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

DVBCPUSH.m

Go to the documentation of this file.
DVBCPUSH ;ALB/AKG/JD - CAPRI PUSH UTILITY RPC; APR 25, 2022@9:30am ; 5/19/23 9:07am
 ;;2.7;AMIE;**238,242,248,252,254**;Apr 10, 1995;Build 41
 ;Per VHA Directive 6402 this routine should not be modified
 ;ICR #2263 Supports all calls to Parameter File and XPAR usage
 ;
 Q
 ;
PARAMS(DVBLIST) ;returns data on the entire DVBA parameter list
 ;rpc returns all CAPRI namespaced Parameters
 ;RPC: DVBA CAPRI PARAM INQ
 ;Updated code to allow for multi-instance parameters for CAPRI-13378.  JD - 9/10/24
 ;Update to return word processing parameters CAPRI-16484 2/24/25 CP
 ;
 K DVBLIST
 N DVBCNT,DVBD,DVBI,DVBPARAM,DVBPAR,DVBVAL,DVBERR,DVBTYP
 S DVBCNT=0
 S DVBPARAM="" F  S DVBPARAM=$O(^XTV(8989.51,"B",DVBPARAM)) Q:DVBPARAM=""  D
 .I $P($P(DVBPARAM,U,1)," ")'["DVBA" Q
 .S DVBPAR="" F  S DVBPAR=$O(^XTV(8989.51,"B",DVBPARAM,DVBPAR)) Q:DVBPAR=""  D
 ..S DVBTYP=$$GET1^DIQ(8989.51,DVBPAR,"1.1","I")
 ..I DVBTYP'="W" D
 ...D GETLST^XPAR(.DVBVAL,"PKG",DVBPARAM,"Q")
 ...S (DVBD,DVBI)=""
 ...F  S DVBI=$O(DVBVAL(DVBI)) Q:DVBI=""  S DVBD=DVBD_"|"_$P(DVBVAL(DVBI),U,2)
 ...S DVBLIST(DVBCNT)=DVBPAR_U_DVBPARAM_U_$P(DVBD,"|",2,9999)
 ...S DVBCNT=DVBCNT+1
 ...Q
 ..I DVBTYP="W" D
 ...D GETWP^XPAR(.DVBVAL,"PKG",DVBPARAM,1)
 ...S (DVBD,DVBI)=""
 ...F  S DVBI=$O(DVBVAL(DVBI)) Q:DVBI=""  S DVBD=DVBD_"|"_$G(DVBVAL(DVBI,0))
 ...S DVBLIST(DVBCNT)=DVBPAR_U_DVBPARAM_U_$P(DVBD,"|",2,9999)
 ...S DVBCNT=DVBCNT+1
 ...Q
 Q
 ;
PARAMED(DVBMSG,DVBNAME,DVBVAL) ;
 ;edits exiting parameter value from CAPRI Push Utility
 ;RPC: DVBA CAPRI PARAM UPDATE
 ;Updated code to allow for multi-instance parameters for CAPRI-13378. JD - 9/11/24
 ;Update to allow saving of word processing parameters CAPRI-16484 2/24/25 CP
 ;
 I $G(DVBNAME)="" S DVBMSG="Missing parameter name" Q
 K DVBMSG S DVBMSG=""
 N DVBCNF,DVBCNS,DVBCNT,DVBDLER,DVBERR,DVBF,DVBI,DVBPI,DVBVALV
 N DVBTYP,DVBLEN,DVBI,DVBUPD,DVBTMP
 S (DVBCNF,DVBCNS,DVBCNT,DVBDLER,DVBERR)=0
 S DVBPI=$O(^XTV(8989.51,"B",DVBNAME,""))
 S DVBTYP=$$GET1^DIQ(8989.51,DVBPI,"1.1","I")
 I $D(^XTV(8989.5,"AC",DVBPI))>0 D NDEL^XPAR("PKG",DVBNAME,.DVBDLER)
 I DVBDLER'=0 S DVBMSG=DVBDLER Q
 I $G(DVBVAL)="" S DVBMSG="The entire parameter list has been deleted" Q
 I DVBTYP'="W" D
 .S DVBF=""
 .F DVBI=1:1:$L(DVBVAL,"|") D
 ..S DVBVALV=$P(DVBVAL,"|",DVBI)
 ..D EN^XPAR("PKG.AUTOMATED MED INFO EXCHANGE",DVBNAME,DVBI,DVBVALV,.DVBERR)
 ..S DVBCNT=DVBCNT+1
 ..I DVBERR D  Q
 ...S DVBCNF=DVBCNF+1
 ...S DVBF=DVBF_"|"_DVBI_","_$P(DVBERR,U,2)
 ..S DVBCNS=DVBCNS+1
 .S DVBMSG=DVBCNS_"/"_DVBCNT_" "_$S(DVBCNS=1:"was",1:"were")_" successful"_DVBF
 I DVBTYP="W" D
 . S DVBLEN=$L(DVBVAL,"|")
 . I DVBLEN>1 F DVBI=1:1:DVBLEN S DVBUPD(DVBI)=$P(DVBVAL,"|",DVBI)
 . I DVBLEN=1,$L(DVBVAL)>250 D SPLIT(.DVBUPD,DVBVAL)
 . I DVBLEN=1,$L(DVBVAL)<250 S DVBUPD(1)=$G(DVBVAL)
 . I DVBLEN=1,$D(DVBUPD)<10 S DVBMSG="Issue trying to split Data" Q
 . I DVBNAME="DVBAB CAPRI GITHUB TOKEN" D
 . . S DVBCNT=$O(DVBUPD(""),-1)
 . . S DVBTMP(1)="-----BEGIN RSA PRIVATE KEY-----"
 . . F DVBI=1:1:DVBCNT S DVBTMP(DVBI+1)=DVBUPD(DVBI)
 . . S DVBTMP(DVBCNT+2)="-----END RSA PRIVATE KEY-----"
 . . K DVBUPD M DVBUPD=DVBTMP
 . . Q 
 . D EN^XPAR("PKG",DVBNAME,1,.DVBUPD,.DVBERR)
 . I DVBERR'=0 S DVBMSG=DVBERR Q
 . S DVBMSG=DVBNAME_" was updated successfully" Q
 . Q
 Q
 ;
PARADESC(DVBRTN,DVBIEN) ;
 ;RPC; DVBA CAPRI GET PAR DESC
 ;returns description for selected parameter
 N DVBX,DVBTWP,DVBERR,DVBCT,DVBRT,DVBIENS,DVBTMP
 I $G(DVBIEN)="" S DVBRTN="Missing Parameter IEN" Q
 D GETS^DIQ(8989.51,DVBIEN,20,"","DVBTWP","DVBERR")
 I $D(DVBERR) S DVBRTN=DVBERR Q
 K DVBTMP M DVBTMP=DVBTWP
 S DVBIENS=""_DVBIEN_","
 I $D(DVBTMP) D
 .S DVBCT="",DVBX="" F  S DVBX=$O(DVBTMP(8989.51,DVBIENS,20,DVBX)) Q:DVBX=""  D
 ..S DVBCT=DVBCT+1
 ..S DVBRT(DVBCT)=DVBTMP(8989.51,DVBIENS,20,DVBX)
 M DVBRTN=DVBRT
 K DVBRT,DVBTWP
 Q
 ;
EFOLDMET(DVBRTN,DVBAUTH,DVBPIEN,DVBTRANS,DVBSTAT,DVBERR,DVBRPD) ;
 ;RPC: DVBA CAPRI SET METRICS
 ;Input: DVBAUTH=Authorized User IEN
 ;       DVBPIEN=Patient IEN
 ;       DVBTRANS=Transmission Path
 ;       DVBSTAT=Transmission Status
 ;       DVBERR=Transmission Error Code
 ;       DVBRPD=Report Details
 ;Output: RTN=0 for Failure and 1 for Success
 ;
 N DVBDT,DIC,X,Y,DA,DTOUT,DUOUT,DLAYGO,DVBI,DVBRPC,DVBN1,DVBAIEN,DVBNUM
 I DVBAUTH="" S DVBRTN="0^MISSING AUTHORIZED USER IEN" Q
 I DVBPIEN="" S DVBRTN="0^MISSING PATIENT IEN" Q
 I DVBTRANS="" S DVBRTN="0^MISSING TRANSMISSION PATH" Q
 I DVBSTAT="" S DVBRTN="0^MISSING TRANSMISSION STATUS" Q
 S DVBDT=$$NOW^XLFDT()
 K DIC,DIE,DR,DA
 S (DIC,DIE)="^DVB(396.21,",DIC(0)="L",DLAYGO=396.21 S X=DVBDT
 D ^DIC S DA=+Y K DIC
 I DA=-1 S DVBRTN=0 Q
 S DVBRTN=1
 S DR=".02////"_DVBAUTH_";.03////"_DVBPIEN_";1////"_DVBTRANS D ^DIE
 S DR="1.1////"_DVBSTAT_";1.2////"_DVBERR D ^DIE
 S DVBNUM=DA
 S DVBI="" F  S DVBI=$O(DVBRPD(DVBI)) Q:DVBI=""  D
 .S DA(1)=DVBNUM
 .S DIC="^DVB(396.21,"_DA(1)_",2,",DIC(0)="L"
 .D ^DIC S DA=+Y
 .S DIE=DIC
 .S DVBRPC=$P(DVBRPD(DVBI),U),DVBAIEN=$P(DVBRPD(DVBI),U,2)
 .S DVBN1=$P(DVBRPD(DVBI),U,3,100)
 .S DR=".01////"_DVBRPC_";.02////"_DVBAIEN_";.03////"_DVBN1
 .D ^DIE
 K DIC,DIE,DA,DR,DIRUT
 Q
 ;
PURGEMET(DVBRTN,DUZ,DVBDTP) ;
 ;RPC: DVBA CAPRI PURGE MET
 ;input: DUZ user must have the DVBA METRICS DATA PURGE key
 ;     : Date to purge up to
 N DVBDT,DVBDA,DVBKEY,DVBDATE
 I DUZ="" S DVBRTN="0^Missing DUZ" Q
 I DVBDTP="" S DVBRTN="0^Missing Date" Q
 S X=DVBDTP D ^%DT S DVBDATE=Y
 D OWNSKEY^XUSRB(.DVBKEY,"DVBA CAPRI METRICS PURGE",DUZ)
 I DVBKEY(0)=0 S DVBRTN="0^Missing security key" Q
 S DVBDT="" F  S DVBDT=$O(^DVB(396.21,"B",DVBDT)) Q:DVBDT=""  D
 .S DVBDA="" F  S DVBDA=$O(^DVB(396.21,"B",DVBDT,DVBDA)) Q:DVBDA=""  D
 ..I $P(DVBDT,".")>DVBDATE Q
 ..K DIC,DA,DIK
 ..S DIC="^DVB(396.21,",DA=DVBDA
 ..S DIK=DIC D ^DIK K DIK,DIC
 ..S DVBRTN=1
 I $G(DVBRTN)'=1 S DVBRTN="-1"
 Q
PURGEOPT ;
 W !!,"CAPRI CLINICAL DOCUMENTS EFOLDER METRIC DATA PURGE",!!
 S DIR("?")="Enter date to purge CAPRI Clinical Documents EFolder Metrics file up to.  For Example, to purge from today and older enter today's date"
 S DIR("A")="Enter date to purge CAPRI Clinical Documents EFolder Metrics file."
 S DIR(0)="D" D ^DIR K DIR Q:$D(DIRUT)!($D(DTOUT))
 D PURGEMET(.DVBRTN,DUZ,Y)
 I DVBRTN["Miss" W !!,"Missing Security Key, please check with your manager for additional assistance" Q
 I DVBRTN'=1 W !!,"No records were purged",!! D PURGEOPT Q
 I DVBRTN=1 W !!,"Purge completed"
 Q
ALL(DVBLIST) ;
 ;RPC: DVBA CAPRI GET ALL PARAM
 K DVBLIST
 N DVBCNT,DVBPARAM,DVBVAL,DVBPAR,DVBSIY,DVBSIEN,DVBZ,DVBERR
 S DVBCNT=0
 S DVBPARAM="" F  S DVBPARAM=$O(^XTV(8989.51,"B",DVBPARAM)) Q:DVBPARAM=""  D
 .S DVBPAR="" F  S DVBPAR=$O(^XTV(8989.51,"B",DVBPARAM,DVBPAR)) Q:DVBPAR=""  D
 ..S DVBZ="30*" K DVBSIY D GETS^DIQ(8989.51,DVBPAR,DVBZ,"I","DVBSIY","DVBERR") I $D(DVBERR) Q
 ..S DVBSIEN="" F  S DVBSIEN=$O(DVBSIY(8989.513,DVBSIEN)) Q:DVBSIEN=""  D
 ...N DVBENT S DVBENT=DVBSIY(8989.513,DVBSIEN,.02,"I") I DVBENT'=9.4 Q
 ...I DVBPARAM["XPAR" Q
 ...S DVBVAL=$$GET^XPAR("ALL",DVBPARAM,1,"Q")
 ...S DVBLIST(DVBCNT)=DVBPARAM_U_DVBVAL
 ...S DVBCNT=DVBCNT+1
 Q
SPECADD(DVBMSG,DVBNAME) ; 
 ;RPC: DVBA CAPRI SPEC ADD
 ;adds entry to Special Considerations
 I $G(DVBNAME)="" S DVBMSG="0^Missing Special Considerations name" Q
 K DVBMSG S DVBMSG="",DVBIEN=0
 F  S DVBIEN=$O(^DVB(396.25,DVBIEN)) Q:DVBIEN=""!('DVBIEN)  D
 .I $P(^DVB(396.25,DVBIEN,0),U,1)=DVBNAME S DVBMSG="0^Duplicate"
 .Q
 I DVBMSG="" D
 .K DIC,DO,DIE,DA,DR,DLAYGO,X,Y
 .N DIERR
 .S DIC=396.25,DIC(0)="Z",X=DVBNAME D FILE^DICN
 .S (DA)=+Y,DIE=DIC
 .S DR=".02////1" D ^DIE
 .I $D(DIERR) S DVBMSG="0^Record not added"
 .I '$D(DIERR) S DVBMSG="1^Record added"
 .K DIC,DO,DIE,DA,DR,DLAYGO,X,Y
 .Q
 Q
SPECDIS(DVBMSG,DVBIEN,DVBSTAT) ; 
 ;RPC: DVBA CAPRI SPEC STATUS
 ;disables entry in Special Considerations
 N DIERR
 K DIC,DIE,DA,DR,DLAYGO,X,Y
 I $G(DVBIEN)="" S DVBMSG="0^Missing IEN" Q
 I $G(DVBSTAT)="" S DVBMSG="0^Missing Status" Q
 S DA=DVBIEN,(DLAYGO,DIE)="^DVB(396.25,",DIC(0)="L"
 S DR=".02////"_DVBSTAT D ^DIE
 I $D(DIERR) S DVBMSG="0^Record not disabled"
 I '$D(DIERR) S DVBMSG="1^Record disabled"
 K DIC,DIE,DA,DR,DLAYGO,X,Y
 Q
LISTSC(DVBMSG) ;
 ;RPC: DVBA CAPRI SPEC INACTIVE
 ;list inactive Special Considerations
 N DVBIEN,DVBCNT,DVBRET
 K ^TMP("DVBLSTSC",$J)
 S DVBIEN=0,DVBCNT=0
 F  S DVBIEN=$O(^DVB(396.25,DVBIEN)) Q:DVBIEN=""!('DVBIEN)  D
 .Q:$G(^DVB(396.25,DVBIEN,0))=""
 .Q:$P($G(^DVB(396.25,DVBIEN,0)),U,2)'=0
 .S DVBRET(DVBCNT)=$P(^DVB(396.25,DVBIEN,0),"^",1)_"^"_DVBIEN
 .M ^TMP("DVBLSTSC",$J,DVBCNT)=DVBRET(DVBCNT)
 .S DVBCNT=DVBCNT+1
 S DVBMSG=$NA(^TMP("DVBLSTSC",$J))
 Q
SPLIT(DVBUPD,DVBDATA) ;
 N DVBTOT,DVBPARTS,DVBPLUS,DVBST,DVBEND,DVBRTN,DVBCNT
 S DVBTOT=$L(DVBDATA),DVBPARTS=DVBTOT\100,DVBPLUS=DVBTOT#100
 I DVBPLUS'=0 S DVBPARTS=DVBPARTS+1
 S DVBST=1,DVBEND=100
 F DVBCNT=1:1:DVBPARTS D
 . S DVBUPD(DVBCNT)=$E(DVBDATA,DVBST,DVBEND)
 . S DVBST=DVBST+100,DVBEND=DVBEND+100
 . Q
 Q