- GMTSPSTN ;BIR/RMS - MED RECON TOOL #1 NO GLOSSARY (MED REC PROFILE) ; Jan 31, 2023@12:50:10
- ;;2.7;Health Summary;**94,127,131,132,135,115,145**;Oct 20, 1995;Build 191
- ;
- ; Reference to COVER^ORWPS in ICR #7392
- ; Reference to $$GET^ORRDI1,$$HAVEHDR^ORRDI1 in ICR #4659
- ; Reference to ^XTMP("ORRDI","PSOO" in ICR #4660
- ; Reference to ^XTMP("ORRDI","OUTAGE INFO" in ICR #5440
- ; Reference to ^PSOHCSUM in ICR #330
- ; Reference to $$ISCLIN^ORUTL1 in ICR #5691
- ; Reference to ^OR(100 in ICR #5771
- ; Reference to ^PS(51 in ICR #1980
- ; Reference to ^PS(53.1 in ICR #534
- ; Reference to TEXT^ORQ12 in ICR #4202
- ; Reference to $$PKGID^ORX8 in ICR #3071
- ; Reference to BCMALG^PSJUTL2 in ICR #5057
- ; Reference to OEL^PSOORRL in ICR #2400
- ; Reference to IMOOD^ORIMO in ICR #7389
- TOOL1 ;ENTRY POINT FOR HEALTH SUMMARY
- N ALPHA,DRUGNM,EXPDAYS,IND1,LIST,ORDER,PSNUM,RPC,RPCT,RPCNODE,SAVE,SAVERD
- D ADD^GMTSPSTR("GMTSPSTN")
- S IND1=7,EXPDAYS=90
- D COVER^ORWPS(.RPC,DFN)
- S RPCT=0 F S RPCT=$O(RPC(RPCT)) Q:'+RPCT D
- . S RPCNODE=RPC(RPCT)
- . S PSNUM=$P(RPCNODE,U)
- . S DRUGNM=$$UP^XLFSTR($P(RPCNODE,U,2))
- . S ORDER=+$P(RPCNODE,U,3)
- . Q:DRUGNM']""!(ORDER=0)!(PSNUM']"")
- . S SAVERD=9999999-$$LRD(+$G(^OR(100,ORDER,4)))
- . S SAVE(DRUGNM,SAVERD,ORDER,PSNUM)=""
- . Q:("ACTIVE^ACTIVE/SUSP^ACTIVE/PARKED^HOLD^PENDING^ON CALL"'[$P(RPCNODE,U,4))&($P(PSNUM,";")["N")
- . S ALPHA(1,DRUGNM,ORDER,PSNUM)=$P(RPCNODE,U,4)
- D ADDREM
- D HEADER
- S LIST=1 D OUTPUT
- D CKP Q:$D(GMTSQIT) W !
- D CKP Q:$D(GMTSQIT) W !,$$REPEAT^XLFSTR("-",IOM-8)
- D CKP Q:$D(GMTSQIT) W !,$$CJ^XLFSTR("SUPPLIES",IOM-8)
- D CKP Q:$D(GMTSQIT) W !,$$REPEAT^XLFSTR("-",IOM-8)
- D CKP Q:$D(GMTSQIT) W !
- S LIST=2 D OUTPUT
- Q
- ;
- ADDREM ;USES RDI - REMOTE DATA INTEROPERABILITY TO INCORPORATE OUTSIDE MEDS
- N DOWN,MED,RDI,RNAM,RNUM,STAT,ISSUE
- Q:'$$HAVEHDR^ORRDI1
- D Q:$G(DOWN) ;Check for outage of RDI
- . I $D(^XTMP("ORRDI","OUTAGE INFO","DOWN")) H $$GET^XPAR("ALL","ORRDI PING FREQ")/2
- . I $D(^XTMP("ORRDI","OUTAGE INFO","DOWN")) S DOWN=1 D Q:$D(GMTSQIT)
- .. D CKP Q:$D(GMTSQIT)
- .. W !,"WARNING: Connection to Remote Data Currently Down",!
- .. D CKP
- Q:$D(GMTSQIT)
- ;Get data for HFS file structure
- D SAVDEV^%ZISUTL("GMTSHFS")
- S RDI=$$GET^ORRDI1(DFN,"PSOO")
- D USE^%ZISUTL("GMTSHFS")
- D RMDEV^%ZISUTL("GMTSHFS")
- ;
- H 1 ;One extra second to allow ^XTMP replication across nodes
- I +RDI=-1 D Q:$D(GMTSQIT)
- . D CKP Q:$D(GMTSQIT)
- . W !,"WARNING: Connection to Remote Data Not Available",!
- . D CKP
- Q:'$D(^XTMP("ORRDI","PSOO",DFN))
- S MED=0 F S MED=$O(^XTMP("ORRDI","PSOO",DFN,MED)) Q:'+MED D
- . S STAT=$G(^XTMP("ORRDI","PSOO",DFN,MED,5,0))
- . Q:STAT']""
- . Q:"ACTIVE^SUSPENDED^HOLD"'[STAT
- . ; GMTS*2.7*135 Commented out the next line
- . ;Q:$G(^XTMP("ORRDI","PSOO",DFN,MED,7,0))']"" ;DoD:quit if there is no exp. date
- . D Q:ISSUE<$$FMADD^XLFDT(DT,-366) ;DoD: quit if ISSUE DATE > 1Y ago
- .. N %DT,X,Y
- .. S X=$G(^XTMP("ORRDI","PSOO",DFN,MED,8,0))
- .. D ^%DT
- .. S ISSUE=+Y
- . S RNAM=$G(^XTMP("ORRDI","PSOO",DFN,MED,2,0),"Unknown Drug")
- . S RNUM=$G(^XTMP("ORRDI","PSOO",DFN,MED,4,0))
- . Q:RNAM']""!(RNUM']"")
- . S ALPHA(1,RNAM,RNUM,MED_"X;R")=""
- Q
- N NVADT,REPEAT
- S NVADT=$$NVADT
- D TEXTPRNT("HEADTXT1")
- D CKP Q:$D(GMTSQIT)
- W !,"Non-VA Meds Last Documented On: "
- W $S(+NVADT:$$FMTE^XLFDT(NVADT,"D"),1:"** Data not found **")
- D CKP Q:$D(GMTSQIT)
- W !,$$REPEAT^XLFSTR("*",IOM-8)
- D CKP Q:$D(GMTSQIT) W !
- D CKP Q:$D(GMTSQIT)
- D TEXTPRNT("HEADTXT2")
- F REPEAT=1,2 D CKP Q:$D(GMTSQIT) W !
- D CKP Q:$D(GMTSQIT)
- W !,$$REPEAT^XLFSTR("-",IOM-8)
- D CKP Q:$D(GMTSQIT)
- Q
- TEXTPRNT(TEXTLOC) ;PRINT LINES OF TEXT FROM A LINE LABEL, ENDS WITH $$END
- N LINE,TLINE,LINETEXT
- S LINE=0 F S LINE=LINE+1,TLINE=TEXTLOC_"+"_LINE,LINETEXT=$T(@TLINE) S LINETEXT=$E(LINETEXT,4,$L(LINETEXT)) Q:LINETEXT="$$END" D
- . D CKP Q:$D(GMTSQIT)
- . W !,LINETEXT
- Q
- OUTPUT N DRUGNM,ORDER,PSNUM
- N PACK,PACKREF,SIGLINE,ORDNUM
- N LASTACT,OTLINE
- S DRUGNM="" F S DRUGNM=$O(ALPHA(LIST,DRUGNM)) Q:DRUGNM']"" D K SAVE(DRUGNM) Q:$D(GMTSQIT)
- . S ORDER="" F S ORDER=$O(ALPHA(LIST,DRUGNM,ORDER)) Q:ORDER']"" D Q:$D(GMTSQIT)
- .. S PSNUM="" F S PSNUM=$O(ALPHA(LIST,DRUGNM,ORDER,PSNUM)) Q:PSNUM']"" D Q:$D(GMTSQIT)
- ... S PACK=$P(PSNUM,";",2),ORDNUM=$P(PSNUM,";")
- ... I $$ISSUPPLY(,DRUGNM) S ALPHA(2,DRUGNM,ORDER,PSNUM)=ALPHA(LIST,DRUGNM,ORDER,PSNUM) Q
- ... I PACK="I" D INPDISP W ! Q:$D(GMTSQIT)
- ... I PACK="O" D OPTDISP W ! Q:$D(GMTSQIT)
- ... I PACK="R" D RDIDISP W ! Q:$D(GMTSQIT)
- Q
- INPDISP ;Display an Inpatient or Clinic Meds Entry
- N GMTSPSTN,OALINE,OR0,ORIG,ORVP,PSIFN,WLINE,DIWL,DIWR,DIWF,TYPE,X,LASTBCMA,STATUS
- N DDNUM,DRUGDISP,ORY
- K ^UTILITY($J,"W")
- D CKP Q:$D(GMTSQIT)
- S STATUS=$G(ALPHA(LIST,DRUGNM,ORDER,PSNUM))
- S STATUS=$S(STATUS["ACTIVE":"Active",STATUS["HOLD":"On Hold",STATUS["PENDING":"Pending",STATUS["DISCONTINUED":"Discontinued",1:STATUS)
- ;W !,$S($$ISCLIN^ORUTL1(ORDER):"CLIN ",1:"INPT ")_DRUGNM_" (Status="_STATUS_")"
- D DRUGDSP
- D IMOOD^ORIMO(.ORY,ORDER)
- W !,$S(ORY:"CLIN ",1:"INPT ")_DRUGDISP_" (Status="_STATUS_")"
- D CKP Q:$D(GMTSQIT)
- D DRGDSP2
- D TEXT^ORQ12(.GMTSPSTN,ORDER,80)
- S DIWL=IND1,DIWR=60,ORIG=$S(PSNUM["U":2,$$GET1^DIQ(53.1,+PSNUM,4,"I")="U":2,1:1)
- D:$E(GMTSPSTN(1),1,7)="Change "
- . F OALINE=2:1:$O(GMTSPSTN(":"),-1) I $E(GMTSPSTN(OALINE),1,3)="to " S ORIG=OALINE,$E(GMTSPSTN(OALINE),1,3)="" Q
- F OALINE=ORIG:1:$O(GMTSPSTN(":"),-1) D
- . S X=$$LSIG($G(GMTSPSTN(OALINE)))
- .; S X=$G(GMTSPSTN(OALINE))
- . D ^DIWP
- S WLINE=0 F S WLINE=$O(^UTILITY($J,"W",DIWL,WLINE)) Q:'+WLINE D Q:$D(GMTSQIT)
- . W !?DIWL,$G(^UTILITY($J,"W",DIWL,WLINE,0))
- . D CKP
- Q:$D(GMTSQIT)
- S LASTBCMA=$$BCMALG^PSJUTL2(DFN,ORDNUM)
- I LASTBCMA'="" W !?IND1,$$BCMALG^PSJUTL2(DFN,ORDNUM) D CKP Q:$D(GMTSQIT)
- Q
- ;
- DRUGDSP ; Get Medication with Dosage
- S PSIFN=$G(^OR(100,ORDER,4)),OR0=$G(^OR(100,ORDER,0))
- S TYPE=$$GETPKG(ORDER)
- S ORVP=$P(OR0,U,2) K ^TMP("PS",$J)
- D OEL^PSOORRL(+ORVP,PSIFN_";"_TYPE) ; IA 2400
- S DRUGDISP="" I $P($G(^TMP("PS",$J,"DD",1,0)),U,1)]"" D
- . S DRUGDISP=$$GET1^DIQ(50,+$P(^TMP("PS",$J,"DD",1,0),U,1)_",",.01)
- S DRUGDISP=$S(DRUGDISP]"":DRUGDISP,1:DRUGNM)
- Q
- ;
- DRGDSP2 ; Display other multiple information for medications/dosages
- S DDNUM=1 F S DDNUM=$O(^TMP("PS",$J,"DD",DDNUM)) Q:DDNUM="" D Q:$D(GMTSQIT)
- . S DRUGDISP=$$GET1^DIQ(50,+$P(^TMP("PS",$J,"DD",DDNUM,0),U,1)_",",.01)
- . I DRUGDISP]"" W !," ",DRUGDISP D CKP
- Q
- ;
- OPTDISP ;Display an Outpatient Prescription Entry
- N EXPDT,REFILLS,STATUS,DIWL,DIWR,PENDMED,GMTSPSTP,ORQLN,CANCELDT
- N ORDTYP,ORIGRX,QDFLAG
- K ^TMP($J,"GMTSPSTN"),^UTILITY($J,"W")
- S PACKREF=$$PKGID^ORX8(ORDER)
- I PACKREF["S" D Q
- . D PEN^PSO5241(DFN,"GMTSPSTN",+PACKREF,ORDER)
- . D CKP Q:$D(GMTSQIT)
- . W !,"OUTPT "_DRUGNM_" (Status = Pending)"
- . D CKP Q:$D(GMTSQIT)
- . D TEXT^ORQ12(.GMTSPSTP,ORDER,60)
- . ;p127 mwa stopped previous instructions from showing, stopped subscript error, and leading space error
- . S ORQLN=1 F S ORQLN=$O(GMTSPSTP(ORQLN)) Q:'+ORQLN Q:$E(GMTSPSTP(ORQLN),1,3+$L($P(DRUGNM," ")))=("to "_$P(DRUGNM," "))
- . S:ORQLN="" ORQLN=1
- . F S ORQLN=$O(GMTSPSTP(ORQLN)) Q:'+ORQLN Q:(GMTSPSTP(ORQLN)?." "1"Quantity: ".E) D
- .. W !?IND1,GMTSPSTP(ORQLN)
- .. D CKP Q:$D(GMTSQIT)
- . S ORIGRX=$P($G(^TMP($J,"GMTSPSTN",DFN,+PACKREF,22.1)),U,2)
- . S ORDTYP=$P($G(^TMP($J,"GMTSPSTN",DFN,+PACKREF,2)),U,1)
- . S QDFLAG=0 I ORIGRX]"",ORDTYP="RNW" D
- .. W !?10,"Renewed from Rx# "_ORIGRX
- .. D CKP Q:$D(GMTSQIT)
- .. W ?50,"Qty/Days Supply: "_$G(^TMP($J,"GMTSPSTN",DFN,+PACKREF,12))_"/"_$G(^TMP($J,"GMTSPSTN",DFN,+PACKREF,101))
- .. S QDFLAG=1
- . D CKP Q:$D(GMTSQIT)
- . W !?10,"Login Date: "_$$FMTE^XLFDT(+$G(^TMP($J,"GMTSPSTN",DFN,+PACKREF,15)),"2D")
- . D CKP Q:$D(GMTSQIT)
- . I 'QDFLAG D
- .. W ?50,"Qty/Days Supply: "_$G(^TMP($J,"GMTSPSTN",DFN,+PACKREF,12))_"/"_$G(^TMP($J,"GMTSPSTN",DFN,+PACKREF,101))
- .. D CKP Q:$D(GMTSQIT)
- . W:'QDFLAG ! W ?50,"Refills Ordered: "_$G(^TMP($J,"GMTSPSTN",DFN,+PACKREF,13))
- . D CKP Q:$D(GMTSQIT)
- . W !
- D RX^PSO52API(DFN,"GMTSPSTN",PACKREF)
- S EXPDT=$G(^TMP($J,"GMTSPSTN",DFN,PACKREF,26))
- S CANCELDT=$G(^TMP($J,"GMTSPSTN",DFN,PACKREF,26.1))
- S REFILLS=$G(^TMP($J,"GMTSPSTN",DFN,PACKREF,9))-$S($G(^TMP($J,"GMTSPSTN",DFN,PACKREF,"RF",0))>0:$G(^TMP($J,"GMTSPSTN",DFN,PACKREF,"RF",0)),1:0) ;need to make sure this is as accurate as the previous method in PSOQ0076
- S LASTREL=$$LRD(PACKREF)
- I $P(PSNUM,";")["N" G NVADISP
- I EXPDT Q:$$FMDIFF^XLFDT(DT,$P(EXPDT,U))>EXPDAYS
- I CANCELDT Q:$$FMDIFF^XLFDT(DT,$P(CANCELDT,U))>EXPDAYS
- S STATUS=$P($G(^TMP($J,"GMTSPSTN",DFN,PACKREF,100)),U,2)
- S STATUS=$S(STATUS["PARK":"Active/Parked",STATUS["ACTIVE":"Active",STATUS["SUSPENDED":"Active/Suspended",STATUS["HOLD":"On Hold",STATUS["DISCONTINUED":"Discontinued",1:STATUS)
- D CKP Q:$D(GMTSQIT)
- W !,"OUTPT "_DRUGNM_" (Status = "_STATUS_")"
- S DIWL=IND1,DIWR=72
- S SIGLINE=0 F S SIGLINE=$O(^TMP($J,"GMTSPSTN",DFN,PACKREF,"M",SIGLINE)) Q:'+SIGLINE D Q:$D(GMTSQIT)
- . S X=$G(^TMP($J,"GMTSPSTN",DFN,PACKREF,"M",SIGLINE,0))
- . D ^DIWP
- S WLINE=0 F S WLINE=$O(^UTILITY($J,"W",DIWL,WLINE)) Q:'+WLINE!($D(GMTSQIT)) D Q:$D(GMTSQIT)
- . W !?DIWL,$G(^UTILITY($J,"W",DIWL,WLINE,0))
- . D CKP
- Q:$D(GMTSQIT)
- W !?10,"Rx# "_$G(^TMP($J,"GMTSPSTN",DFN,PACKREF,.01))_" Last Released: "_$$FMTE^XLFDT(LASTREL,"2D"),?50,"Qty/Days Supply: "_$G(^TMP($J,"GMTSPSTN",DFN,PACKREF,7))_"/"_$G(^TMP($J,"GMTSPSTN",DFN,PACKREF,8)) D CKP Q:$D(GMTSQIT)
- W !?10,"Rx Expiration Date: ",$$FMTE^XLFDT(EXPDT,"2D"),?50,"Refills Remaining: ",REFILLS D CKP Q:$D(GMTSQIT)
- W:$P($G(^TMP($J,"GMTSPSTN",DFN,PACKREF,"IND")),U)]"" !?10,"Indication: "_$P(^TMP($J,"GMTSPSTN",DFN,PACKREF,"IND"),U)
- W ! D CKP
- Q
- ;
- ISSUPPLY(DRUG,DRUGNAME) ;
- ; Function returns '1' if drug is a SUPPLY, '0' otherwise
- Q:LIST=2 0 ;Only check during regular med list, not in supply list
- N VACLASS,DEAHDLG
- K ^TMP($J,"GMTSPSTND")
- I +$G(DRUG) D DATA^PSS50(DRUG,,,,,"GMTSPSTND")
- E D DATA^PSS50(,DRUGNAME,,,,"GMTSPSTND") S DRUG=$O(^TMP($J,"GMTSPSTND",0))
- I 'DRUG Q 0
- S VACLASS=$G(^TMP($J,"GMTSPSTND",DRUG,2))
- S DEAHDLG=$G(^TMP($J,"GMTSPSTND",DRUG,3))
- Q:$E(VACLASS,1,2)="XA" 1
- Q:$E(VACLASS,1,2)="XX" 1
- Q:(VACLASS="DX900")&(DEAHDLG["S") 1
- Q 0
- ;
- RDIDISP ;Display a Remote Meds Entry
- D CKP Q:$D(GMTSQIT)
- W !,"Remote ",?IND1,DRUGNM D CKP Q:$D(GMTSQIT)
- N STATUS,DIWL,DIWR,DIWF,X,WLINE
- K ^UTILITY($J,"W")
- S X=$G(^XTMP("ORRDI","PSOO",DFN,+ORDNUM,14,0)),DIWL=IND1,DIWR=60
- D ^DIWP
- S WLINE=0 F S WLINE=$O(^UTILITY($J,"W",DIWL,WLINE)) Q:'+WLINE D Q:$D(GMTSQIT)
- . D CKP Q:$D(GMTSQIT)
- . W !?DIWL,$G(^UTILITY($J,"W",DIWL,WLINE,0))
- D CKP Q:$D(GMTSQIT)
- S STATUS=$G(^XTMP("ORRDI","PSOO",DFN,+ORDNUM,5,0))
- S STATUS=$S(STATUS["ACTIVE":"Active",STATUS["SUSPENDED":"Active/Suspended",STATUS["HOLD":"Hold",1:"Unknown")
- W !?10,"Last Filled: "_$G(^XTMP("ORRDI","PSOO",DFN,+ORDNUM,9,0))_" ("_STATUS_" at "_$G(^XTMP("ORRDI","PSOO",DFN,+ORDNUM,1,0))_") "
- W !?10,"Rx Expiration Date: ",$G(^XTMP("ORRDI","PSOO",DFN,+ORDNUM,7,0)),?55,"Days Supply: "_$P($P($G(^XTMP("ORRDI","PSOO",DFN,+ORDNUM,6,0)),";",2),"D",2)
- Q
- ;
- NVADISP ;Display a Non-VA Medication Entry
- N GMTSPSTN,OALINE,ORIG,WLINE,DIWL,DIWR,DIWF,X
- K ^UTILITY($J,"W")
- D CKP Q:$D(GMTSQIT)
- W !,"Non-VA "_DRUGNM D CKP Q:$D(GMTSQIT)
- D TEXT^ORQ12(.GMTSPSTN,ORDER,80)
- S DIWL=IND1,DIWR=60,ORIG=2
- D:$E(GMTSPSTN(1),1,14)="Non-VA Change "
- . F OALINE=2:1:$O(GMTSPSTN(":"),-1) I $E(GMTSPSTN(OALINE),1,3)="to " S ORIG=OALINE+1 Q
- F OALINE=ORIG:1:$O(GMTSPSTN(":"),-1) D
- . S X=$$LSIG($G(GMTSPSTN(OALINE)))
- . D ^DIWP
- S WLINE=0 F S WLINE=$O(^UTILITY($J,"W",DIWL,WLINE)) Q:'+WLINE D Q:$D(GMTSQIT)
- . W !?DIWL,$G(^UTILITY($J,"W",DIWL,WLINE,0))
- . D CKP
- W ! D CKP Q:$D(GMTSQIT)
- Q
- D CKP Q:$D(GMTSQIT) W !
- D TEXTPRNT("FOOTER1")
- Q
- N LASTREL,FOOTTXT,DAYSSUPP,STATUS
- K ^TMP($J,"GMTSPSTN")
- S PACKREF=$$PKGID^ORX8(ORDER)
- S LASTREL=$$LRD(PACKREF)
- Q:LASTREL<$$FMADD^XLFDT(DT,-365)
- Q:$P(PSNUM,";")["N"
- D CKP Q:$D(GMTSQIT)
- W !,"OPT "_DRUGNM D CKP Q:$D(GMTSQIT)
- D RX^PSO52API(DFN,"GMTSPSTN",PACKREF)
- S STATUS=$P($G(^TMP($J,"GMTSPSTN",DFN,PACKREF,100)),U,2)
- S DAYSSUPP=$G(^TMP($J,"GMTSPSTN",DFN,PACKREF,8))
- S FOOTTXT="("_STATUS_"/"_DAYSSUPP_" Days Supply Last Released: "_$$FMTE^XLFDT(LASTREL,"2D")_")"
- W $$RJ^XLFSTR(FOOTTXT,74) D CKP Q:$D(GMTSQIT)
- S SIGLINE=0 F S SIGLINE=$O(^TMP($J,"GMTSPSTN",DFN,PACKREF,"M",SIGLINE)) Q:'+SIGLINE D Q:$D(GMTSQIT)
- . W !?IND1,$G(^TMP($J,"GMTSPSTN",DFN,PACKREF,"M",SIGLINE,0))
- . D CKP
- D CKP
- Q
- NVADT() ;Replaces call previously in ^PSOQCF04
- N NVAL,NVARR
- D ^PSOHCSUM
- Q:'$D(^TMP("PSOO",$J,"NVA")) ""
- S NVAL=0 F S NVAL=$O(^TMP("PSOO",$J,"NVA",NVAL)) Q:'+NVAL D
- . S NVADT=9999999-$P($G(^TMP("PSOO",$J,"NVA",NVAL,0)),"^",5)
- . S NVARR(NVADT)=""
- S NVADT=$O(NVARR(0)) Q:NVADT=9999999 ""
- Q 9999999-NVADT
- LSIG(SIG) ;Expand a SIG
- N P,SGY,X,%
- S SGY="" F P=1:1:$L(SIG," ") S X=$P(SIG," ",P) D:X]"" ;
- .I $D(^PS(51,"A",X)) S %=^(X),X=$P(%,"^") I $P(%,"^",2)]"" S Y=$P(SIG," ",P-1),Y=$E(Y,$L(Y)) S:Y>1 X=$P(%,"^",2)
- .S SGY=SGY_X_" "
- Q SGY
- LRD(PACKREF) ;Calculate LAST RELEASE DATE as latest of original + refill relDates
- N RELDT,REFDT,CTR,ANS
- K ^TMP($J,"GMTSLRD")
- S ANS=""
- D RX^PSO52API(DFN,"GMTSLRD",PACKREF,,"3,R")
- S RELDT=$G(^TMP($J,"GMTSLRD",DFN,PACKREF,31))
- S ANS=RELDT
- S CTR=0 F S CTR=$O(^TMP($J,"GMTSLRD",DFN,PACKREF,"RF",CTR)) Q:'+CTR D ;
- . S REFDT=$G(^TMP($J,"GMTSLRD",DFN,PACKREF,"RF",CTR,17))
- . I REFDT>ANS S ANS=REFDT
- K ^TMP($J,"GMTSLRD")
- Q ANS
- ;
- CKP D CKP^GMTSUP Q
- ;
- GETPKG(ORDER) ;GET PACKAGE TYPE, added by GMTS*2.7*132
- N PKGIEN,PKGTYPE
- S PKGIEN=$$GET1^DIQ(100,ORDER_",",12,"I")
- S PKGTYPE=$$GET1^DIQ(9.4,PKGIEN_",",.01,"I")
- I PKGTYPE="INPATIENT MEDICATIONS" Q "I"
- I PKGTYPE="OUTPATIENT PHARMACY" Q "O"
- Q $$GET1^DIQ(100,ORDER_",",10,"I")
- HEADTXT1 ;;
- ;;INCLUDED IN THIS LIST: Alphabetical list of active outpatient
- ;;prescriptions dispensed from this VA (local) and dispensed from another
- ;;VA or DoD facility (remote) as well as inpatient orders (local pending and
- ;;active), local clinic medications, locally documented non-VA medications,
- ;;and local prescriptions that have expired or been discontinued in the past
- ;;90 days.
- ;;
- ;;$$END
- HEADTXT2 ;;
- ;;***NOTE*** The display of VA prescriptions dispensed from another VA or
- ;;DoD facility (remote) is limited to active outpatient prescription entries
- ;;matched to National Drug File at the originating site and may not include
- ;;some items such as investigational drugs, compounds, etc.
- ;;
- ;;NOT INCLUDED IN THIS LIST: Medications self-entered by the patient into
- ;;personal health records (i.e. My HealtheVet) are NOT included in this
- ;;list. Non-VA medications documented outside this VA, remote inpatient
- ;;orders (regardless of status) and remote clinic medications are NOT
- ;;included in this list. The patient and provider must always discuss
- ;;medications the patient is taking, regardless of where the medication was
- ;;dispensed or obtained.
- ;;$$END
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMTSPSTN 15209 printed Mar 13, 2025@21:04:31 Page 2
- GMTSPSTN ;BIR/RMS - MED RECON TOOL #1 NO GLOSSARY (MED REC PROFILE) ; Jan 31, 2023@12:50:10
- +1 ;;2.7;Health Summary;**94,127,131,132,135,115,145**;Oct 20, 1995;Build 191
- +2 ;
- +3 ; Reference to COVER^ORWPS in ICR #7392
- +4 ; Reference to $$GET^ORRDI1,$$HAVEHDR^ORRDI1 in ICR #4659
- +5 ; Reference to ^XTMP("ORRDI","PSOO" in ICR #4660
- +6 ; Reference to ^XTMP("ORRDI","OUTAGE INFO" in ICR #5440
- +7 ; Reference to ^PSOHCSUM in ICR #330
- +8 ; Reference to $$ISCLIN^ORUTL1 in ICR #5691
- +9 ; Reference to ^OR(100 in ICR #5771
- +10 ; Reference to ^PS(51 in ICR #1980
- +11 ; Reference to ^PS(53.1 in ICR #534
- +12 ; Reference to TEXT^ORQ12 in ICR #4202
- +13 ; Reference to $$PKGID^ORX8 in ICR #3071
- +14 ; Reference to BCMALG^PSJUTL2 in ICR #5057
- +15 ; Reference to OEL^PSOORRL in ICR #2400
- +16 ; Reference to IMOOD^ORIMO in ICR #7389
- TOOL1 ;ENTRY POINT FOR HEALTH SUMMARY
- +1 NEW ALPHA,DRUGNM,EXPDAYS,IND1,LIST,ORDER,PSNUM,RPC,RPCT,RPCNODE,SAVE,SAVERD
- +2 DO ADD^GMTSPSTR("GMTSPSTN")
- +3 SET IND1=7
- SET EXPDAYS=90
- +4 DO COVER^ORWPS(.RPC,DFN)
- +5 SET RPCT=0
- FOR
- SET RPCT=$ORDER(RPC(RPCT))
- if '+RPCT
- QUIT
- Begin DoDot:1
- +6 SET RPCNODE=RPC(RPCT)
- +7 SET PSNUM=$PIECE(RPCNODE,U)
- +8 SET DRUGNM=$$UP^XLFSTR($PIECE(RPCNODE,U,2))
- +9 SET ORDER=+$PIECE(RPCNODE,U,3)
- +10 if DRUGNM']""!(ORDER=0)!(PSNUM']"")
- QUIT
- +11 SET SAVERD=9999999-$$LRD(+$GET(^OR(100,ORDER,4)))
- +12 SET SAVE(DRUGNM,SAVERD,ORDER,PSNUM)=""
- +13 if ("ACTIVE^ACTIVE/SUSP^ACTIVE/PARKED^HOLD^PENDING^ON CALL"'[$PIECE(RPCNODE,U,4))&($PIECE(PSNUM,";")["N")
- QUIT
- +14 SET ALPHA(1,DRUGNM,ORDER,PSNUM)=$PIECE(RPCNODE,U,4)
- End DoDot:1
- +15 DO ADDREM
- +16 DO HEADER
- +17 SET LIST=1
- DO OUTPUT
- +18 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- WRITE !
- +19 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- WRITE !,$$REPEAT^XLFSTR("-",IOM-8)
- +20 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- WRITE !,$$CJ^XLFSTR("SUPPLIES",IOM-8)
- +21 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- WRITE !,$$REPEAT^XLFSTR("-",IOM-8)
- +22 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- WRITE !
- +23 SET LIST=2
- DO OUTPUT
- +24 QUIT
- +25 ;
- ADDREM ;USES RDI - REMOTE DATA INTEROPERABILITY TO INCORPORATE OUTSIDE MEDS
- +1 NEW DOWN,MED,RDI,RNAM,RNUM,STAT,ISSUE
- +2 if '$$HAVEHDR^ORRDI1
- QUIT
- +3 ;Check for outage of RDI
- Begin DoDot:1
- +4 IF $DATA(^XTMP("ORRDI","OUTAGE INFO","DOWN"))
- HANG $$GET^XPAR("ALL","ORRDI PING FREQ")/2
- +5 IF $DATA(^XTMP("ORRDI","OUTAGE INFO","DOWN"))
- SET DOWN=1
- Begin DoDot:2
- +6 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +7 WRITE !,"WARNING: Connection to Remote Data Currently Down",!
- +8 DO CKP
- End DoDot:2
- if $DATA(GMTSQIT)
- QUIT
- End DoDot:1
- if $GET(DOWN)
- QUIT
- +9 if $DATA(GMTSQIT)
- QUIT
- +10 ;Get data for HFS file structure
- +11 DO SAVDEV^%ZISUTL("GMTSHFS")
- +12 SET RDI=$$GET^ORRDI1(DFN,"PSOO")
- +13 DO USE^%ZISUTL("GMTSHFS")
- +14 DO RMDEV^%ZISUTL("GMTSHFS")
- +15 ;
- +16 ;One extra second to allow ^XTMP replication across nodes
- HANG 1
- +17 IF +RDI=-1
- Begin DoDot:1
- +18 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +19 WRITE !,"WARNING: Connection to Remote Data Not Available",!
- +20 DO CKP
- End DoDot:1
- if $DATA(GMTSQIT)
- QUIT
- +21 if '$DATA(^XTMP("ORRDI","PSOO",DFN))
- QUIT
- +22 SET MED=0
- FOR
- SET MED=$ORDER(^XTMP("ORRDI","PSOO",DFN,MED))
- if '+MED
- QUIT
- Begin DoDot:1
- +23 SET STAT=$GET(^XTMP("ORRDI","PSOO",DFN,MED,5,0))
- +24 if STAT']""
- QUIT
- +25 if "ACTIVE^SUSPENDED^HOLD"'[STAT
- QUIT
- +26 ; GMTS*2.7*135 Commented out the next line
- +27 ;Q:$G(^XTMP("ORRDI","PSOO",DFN,MED,7,0))']"" ;DoD:quit if there is no exp. date
- +28 ;DoD: quit if ISSUE DATE > 1Y ago
- Begin DoDot:2
- +29 NEW %DT,X,Y
- +30 SET X=$GET(^XTMP("ORRDI","PSOO",DFN,MED,8,0))
- +31 DO ^%DT
- +32 SET ISSUE=+Y
- End DoDot:2
- if ISSUE<$$FMADD^XLFDT(DT,-366)
- QUIT
- +33 SET RNAM=$GET(^XTMP("ORRDI","PSOO",DFN,MED,2,0),"Unknown Drug")
- +34 SET RNUM=$GET(^XTMP("ORRDI","PSOO",DFN,MED,4,0))
- +35 if RNAM']""!(RNUM']"")
- QUIT
- +36 SET ALPHA(1,RNAM,RNUM,MED_"X;R")=""
- End DoDot:1
- +37 QUIT
- +1 NEW NVADT,REPEAT
- +2 SET NVADT=$$NVADT
- +3 DO TEXTPRNT("HEADTXT1")
- +4 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +5 WRITE !,"Non-VA Meds Last Documented On: "
- +6 WRITE $SELECT(+NVADT:$$FMTE^XLFDT(NVADT,"D"),1:"** Data not found **")
- +7 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +8 WRITE !,$$REPEAT^XLFSTR("*",IOM-8)
- +9 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- WRITE !
- +10 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +11 DO TEXTPRNT("HEADTXT2")
- +12 FOR REPEAT=1,2
- DO CKP
- if $DATA(GMTSQIT)
- QUIT
- WRITE !
- +13 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +14 WRITE !,$$REPEAT^XLFSTR("-",IOM-8)
- +15 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +16 QUIT
- TEXTPRNT(TEXTLOC) ;PRINT LINES OF TEXT FROM A LINE LABEL, ENDS WITH $$END
- +1 NEW LINE,TLINE,LINETEXT
- +2 SET LINE=0
- FOR
- SET LINE=LINE+1
- SET TLINE=TEXTLOC_"+"_LINE
- SET LINETEXT=$TEXT(@TLINE)
- SET LINETEXT=$EXTRACT(LINETEXT,4,$LENGTH(LINETEXT))
- if LINETEXT="$$END"
- QUIT
- Begin DoDot:1
- +3 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +4 WRITE !,LINETEXT
- End DoDot:1
- +5 QUIT
- OUTPUT NEW DRUGNM,ORDER,PSNUM
- +1 NEW PACK,PACKREF,SIGLINE,ORDNUM
- +2 NEW LASTACT,OTLINE
- +3 SET DRUGNM=""
- FOR
- SET DRUGNM=$ORDER(ALPHA(LIST,DRUGNM))
- if DRUGNM']""
- QUIT
- Begin DoDot:1
- +4 SET ORDER=""
- FOR
- SET ORDER=$ORDER(ALPHA(LIST,DRUGNM,ORDER))
- if ORDER']""
- QUIT
- Begin DoDot:2
- +5 SET PSNUM=""
- FOR
- SET PSNUM=$ORDER(ALPHA(LIST,DRUGNM,ORDER,PSNUM))
- if PSNUM']""
- QUIT
- Begin DoDot:3
- +6 SET PACK=$PIECE(PSNUM,";",2)
- SET ORDNUM=$PIECE(PSNUM,";")
- +7 IF $$ISSUPPLY(,DRUGNM)
- SET ALPHA(2,DRUGNM,ORDER,PSNUM)=ALPHA(LIST,DRUGNM,ORDER,PSNUM)
- QUIT
- +8 IF PACK="I"
- DO INPDISP
- WRITE !
- if $DATA(GMTSQIT)
- QUIT
- +9 IF PACK="O"
- DO OPTDISP
- WRITE !
- if $DATA(GMTSQIT)
- QUIT
- +10 IF PACK="R"
- DO RDIDISP
- WRITE !
- if $DATA(GMTSQIT)
- QUIT
- End DoDot:3
- if $DATA(GMTSQIT)
- QUIT
- End DoDot:2
- if $DATA(GMTSQIT)
- QUIT
- End DoDot:1
- KILL SAVE(DRUGNM)
- if $DATA(GMTSQIT)
- QUIT
- +11 QUIT
- INPDISP ;Display an Inpatient or Clinic Meds Entry
- +1 NEW GMTSPSTN,OALINE,OR0,ORIG,ORVP,PSIFN,WLINE,DIWL,DIWR,DIWF,TYPE,X,LASTBCMA,STATUS
- +2 NEW DDNUM,DRUGDISP,ORY
- +3 KILL ^UTILITY($JOB,"W")
- +4 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +5 SET STATUS=$GET(ALPHA(LIST,DRUGNM,ORDER,PSNUM))
- +6 SET STATUS=$SELECT(STATUS["ACTIVE":"Active",STATUS["HOLD":"On Hold",STATUS["PENDING":"Pending",STATUS["DISCONTINUED":"Discontinued",1:STATUS)
- +7 ;W !,$S($$ISCLIN^ORUTL1(ORDER):"CLIN ",1:"INPT ")_DRUGNM_" (Status="_STATUS_")"
- +8 DO DRUGDSP
- +9 DO IMOOD^ORIMO(.ORY,ORDER)
- +10 WRITE !,$SELECT(ORY:"CLIN ",1:"INPT ")_DRUGDISP_" (Status="_STATUS_")"
- +11 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +12 DO DRGDSP2
- +13 DO TEXT^ORQ12(.GMTSPSTN,ORDER,80)
- +14 SET DIWL=IND1
- SET DIWR=60
- SET ORIG=$SELECT(PSNUM["U":2,$$GET1^DIQ(53.1,+PSNUM,4,"I")="U":2,1:1)
- +15 if $EXTRACT(GMTSPSTN(1),1,7)="Change "
- Begin DoDot:1
- +16 FOR OALINE=2:1:$ORDER(GMTSPSTN(":"),-1)
- IF $EXTRACT(GMTSPSTN(OALINE),1,3)="to "
- SET ORIG=OALINE
- SET $EXTRACT(GMTSPSTN(OALINE),1,3)=""
- QUIT
- End DoDot:1
- +17 FOR OALINE=ORIG:1:$ORDER(GMTSPSTN(":"),-1)
- Begin DoDot:1
- +18 SET X=$$LSIG($GET(GMTSPSTN(OALINE)))
- +19 ; S X=$G(GMTSPSTN(OALINE))
- +20 DO ^DIWP
- End DoDot:1
- +21 SET WLINE=0
- FOR
- SET WLINE=$ORDER(^UTILITY($JOB,"W",DIWL,WLINE))
- if '+WLINE
- QUIT
- Begin DoDot:1
- +22 WRITE !?DIWL,$GET(^UTILITY($JOB,"W",DIWL,WLINE,0))
- +23 DO CKP
- End DoDot:1
- if $DATA(GMTSQIT)
- QUIT
- +24 if $DATA(GMTSQIT)
- QUIT
- +25 SET LASTBCMA=$$BCMALG^PSJUTL2(DFN,ORDNUM)
- +26 IF LASTBCMA'=""
- WRITE !?IND1,$$BCMALG^PSJUTL2(DFN,ORDNUM)
- DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +27 QUIT
- +28 ;
- DRUGDSP ; Get Medication with Dosage
- +1 SET PSIFN=$GET(^OR(100,ORDER,4))
- SET OR0=$GET(^OR(100,ORDER,0))
- +2 SET TYPE=$$GETPKG(ORDER)
- +3 SET ORVP=$PIECE(OR0,U,2)
- KILL ^TMP("PS",$JOB)
- +4 ; IA 2400
- DO OEL^PSOORRL(+ORVP,PSIFN_";"_TYPE)
- +5 SET DRUGDISP=""
- IF $PIECE($GET(^TMP("PS",$JOB,"DD",1,0)),U,1)]""
- Begin DoDot:1
- +6 SET DRUGDISP=$$GET1^DIQ(50,+$PIECE(^TMP("PS",$JOB,"DD",1,0),U,1)_",",.01)
- End DoDot:1
- +7 SET DRUGDISP=$SELECT(DRUGDISP]"":DRUGDISP,1:DRUGNM)
- +8 QUIT
- +9 ;
- DRGDSP2 ; Display other multiple information for medications/dosages
- +1 SET DDNUM=1
- FOR
- SET DDNUM=$ORDER(^TMP("PS",$JOB,"DD",DDNUM))
- if DDNUM=""
- QUIT
- Begin DoDot:1
- +2 SET DRUGDISP=$$GET1^DIQ(50,+$PIECE(^TMP("PS",$JOB,"DD",DDNUM,0),U,1)_",",.01)
- +3 IF DRUGDISP]""
- WRITE !," ",DRUGDISP
- DO CKP
- End DoDot:1
- if $DATA(GMTSQIT)
- QUIT
- +4 QUIT
- +5 ;
- OPTDISP ;Display an Outpatient Prescription Entry
- +1 NEW EXPDT,REFILLS,STATUS,DIWL,DIWR,PENDMED,GMTSPSTP,ORQLN,CANCELDT
- +2 NEW ORDTYP,ORIGRX,QDFLAG
- +3 KILL ^TMP($JOB,"GMTSPSTN"),^UTILITY($JOB,"W")
- +4 SET PACKREF=$$PKGID^ORX8(ORDER)
- +5 IF PACKREF["S"
- Begin DoDot:1
- +6 DO PEN^PSO5241(DFN,"GMTSPSTN",+PACKREF,ORDER)
- +7 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +8 WRITE !,"OUTPT "_DRUGNM_" (Status = Pending)"
- +9 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +10 DO TEXT^ORQ12(.GMTSPSTP,ORDER,60)
- +11 ;p127 mwa stopped previous instructions from showing, stopped subscript error, and leading space error
- +12 SET ORQLN=1
- FOR
- SET ORQLN=$ORDER(GMTSPSTP(ORQLN))
- if '+ORQLN
- QUIT
- if $EXTRACT(GMTSPSTP(ORQLN),1,3+$LENGTH($PIECE(DRUGNM," ")))=("to "_$PIECE(DRUGNM," "))
- QUIT
- +13 if ORQLN=""
- SET ORQLN=1
- +14 FOR
- SET ORQLN=$ORDER(GMTSPSTP(ORQLN))
- if '+ORQLN
- QUIT
- if (GMTSPSTP(ORQLN)?." "1"Quantity
- QUIT
- Begin DoDot:2
- +15 WRITE !?IND1,GMTSPSTP(ORQLN)
- +16 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- End DoDot:2
- +17 SET ORIGRX=$PIECE($GET(^TMP($JOB,"GMTSPSTN",DFN,+PACKREF,22.1)),U,2)
- +18 SET ORDTYP=$PIECE($GET(^TMP($JOB,"GMTSPSTN",DFN,+PACKREF,2)),U,1)
- +19 SET QDFLAG=0
- IF ORIGRX]""
- IF ORDTYP="RNW"
- Begin DoDot:2
- +20 WRITE !?10,"Renewed from Rx# "_ORIGRX
- +21 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +22 WRITE ?50,"Qty/Days Supply: "_$GET(^TMP($JOB,"GMTSPSTN",DFN,+PACKREF,12))_"/"_$GET(^TMP($JOB,"GMTSPSTN",DFN,+PACKREF,101))
- +23 SET QDFLAG=1
- End DoDot:2
- +24 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +25 WRITE !?10,"Login Date: "_$$FMTE^XLFDT(+$GET(^TMP($JOB,"GMTSPSTN",DFN,+PACKREF,15)),"2D")
- +26 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +27 IF 'QDFLAG
- Begin DoDot:2
- +28 WRITE ?50,"Qty/Days Supply: "_$GET(^TMP($JOB,"GMTSPSTN",DFN,+PACKREF,12))_"/"_$GET(^TMP($JOB,"GMTSPSTN",DFN,+PACKREF,101))
- +29 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- End DoDot:2
- +30 if 'QDFLAG
- WRITE !
- WRITE ?50,"Refills Ordered: "_$GET(^TMP($JOB,"GMTSPSTN",DFN,+PACKREF,13))
- +31 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +32 WRITE !
- End DoDot:1
- QUIT
- +33 DO RX^PSO52API(DFN,"GMTSPSTN",PACKREF)
- +34 SET EXPDT=$GET(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,26))
- +35 SET CANCELDT=$GET(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,26.1))
- +36 ;need to make sure this is as accurate as the previous method in PSOQ0076
- SET REFILLS=$GET(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,9))-$SELECT($GET(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,"RF",0))>0:$GET(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,"RF",0)),1:0)
- +37 SET LASTREL=$$LRD(PACKREF)
- +38 IF $PIECE(PSNUM,";")["N"
- GOTO NVADISP
- +39 IF EXPDT
- if $$FMDIFF^XLFDT(DT,$PIECE(EXPDT,U))>EXPDAYS
- QUIT
- +40 IF CANCELDT
- if $$FMDIFF^XLFDT(DT,$PIECE(CANCELDT,U))>EXPDAYS
- QUIT
- +41 SET STATUS=$PIECE($GET(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,100)),U,2)
- +42 SET STATUS=$SELECT(STATUS["PARK":"Active/Parked",STATUS["ACTIVE":"Active",STATUS["SUSPENDED":"Active/Suspended",STATUS["HOLD":"On Hold",STATUS["DISCONTINUED":"Discontinued",1:STATUS)
- +43 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +44 WRITE !,"OUTPT "_DRUGNM_" (Status = "_STATUS_")"
- +45 SET DIWL=IND1
- SET DIWR=72
- +46 SET SIGLINE=0
- FOR
- SET SIGLINE=$ORDER(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,"M",SIGLINE))
- if '+SIGLINE
- QUIT
- Begin DoDot:1
- +47 SET X=$GET(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,"M",SIGLINE,0))
- +48 DO ^DIWP
- End DoDot:1
- if $DATA(GMTSQIT)
- QUIT
- +49 SET WLINE=0
- FOR
- SET WLINE=$ORDER(^UTILITY($JOB,"W",DIWL,WLINE))
- if '+WLINE!($DATA(GMTSQIT))
- QUIT
- Begin DoDot:1
- +50 WRITE !?DIWL,$GET(^UTILITY($JOB,"W",DIWL,WLINE,0))
- +51 DO CKP
- End DoDot:1
- if $DATA(GMTSQIT)
- QUIT
- +52 if $DATA(GMTSQIT)
- QUIT
- +53 WRITE !?10,"Rx# "_$GET(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,.01))_" Last Released: "_$$FMTE^XLFDT(LASTREL,"2D"),?50,"Qty/Days Supply: "_$GET(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,7))_"/"_$GET(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,8))
- DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +54 WRITE !?10,"Rx Expiration Date: ",$$FMTE^XLFDT(EXPDT,"2D"),?50,"Refills Remaining: ",REFILLS
- DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +55 if $PIECE($GET(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,"IND")),U)]""
- WRITE !?10,"Indication: "_$PIECE(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,"IND"),U)
- +56 WRITE !
- DO CKP
- +57 QUIT
- +58 ;
- ISSUPPLY(DRUG,DRUGNAME) ;
- +1 ; Function returns '1' if drug is a SUPPLY, '0' otherwise
- +2 ;Only check during regular med list, not in supply list
- if LIST=2
- QUIT 0
- +3 NEW VACLASS,DEAHDLG
- +4 KILL ^TMP($JOB,"GMTSPSTND")
- +5 IF +$GET(DRUG)
- DO DATA^PSS50(DRUG,,,,,"GMTSPSTND")
- +6 IF '$TEST
- DO DATA^PSS50(,DRUGNAME,,,,"GMTSPSTND")
- SET DRUG=$ORDER(^TMP($JOB,"GMTSPSTND",0))
- +7 IF 'DRUG
- QUIT 0
- +8 SET VACLASS=$GET(^TMP($JOB,"GMTSPSTND",DRUG,2))
- +9 SET DEAHDLG=$GET(^TMP($JOB,"GMTSPSTND",DRUG,3))
- +10 if $EXTRACT(VACLASS,1,2)="XA"
- QUIT 1
- +11 if $EXTRACT(VACLASS,1,2)="XX"
- QUIT 1
- +12 if (VACLASS="DX900")&(DEAHDLG["S")
- QUIT 1
- +13 QUIT 0
- +14 ;
- RDIDISP ;Display a Remote Meds Entry
- +1 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +2 WRITE !,"Remote ",?IND1,DRUGNM
- DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +3 NEW STATUS,DIWL,DIWR,DIWF,X,WLINE
- +4 KILL ^UTILITY($JOB,"W")
- +5 SET X=$GET(^XTMP("ORRDI","PSOO",DFN,+ORDNUM,14,0))
- SET DIWL=IND1
- SET DIWR=60
- +6 DO ^DIWP
- +7 SET WLINE=0
- FOR
- SET WLINE=$ORDER(^UTILITY($JOB,"W",DIWL,WLINE))
- if '+WLINE
- QUIT
- Begin DoDot:1
- +8 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +9 WRITE !?DIWL,$GET(^UTILITY($JOB,"W",DIWL,WLINE,0))
- End DoDot:1
- if $DATA(GMTSQIT)
- QUIT
- +10 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +11 SET STATUS=$GET(^XTMP("ORRDI","PSOO",DFN,+ORDNUM,5,0))
- +12 SET STATUS=$SELECT(STATUS["ACTIVE":"Active",STATUS["SUSPENDED":"Active/Suspended",STATUS["HOLD":"Hold",1:"Unknown")
- +13 WRITE !?10,"Last Filled: "_$GET(^XTMP("ORRDI","PSOO",DFN,+ORDNUM,9,0))_" ("_STATUS_" at "_$GET(^XTMP("ORRDI","PSOO",DFN,+ORDNUM,1,0))_") "
- +14 WRITE !?10,"Rx Expiration Date: ",$GET(^XTMP("ORRDI","PSOO",DFN,+ORDNUM,7,0)),?55,"Days Supply: "_$PIECE($PIECE($GET(^XTMP("ORRDI","PSOO",DFN,+ORDNUM,6,0)),";",2),"D",2)
- +15 QUIT
- +16 ;
- NVADISP ;Display a Non-VA Medication Entry
- +1 NEW GMTSPSTN,OALINE,ORIG,WLINE,DIWL,DIWR,DIWF,X
- +2 KILL ^UTILITY($JOB,"W")
- +3 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +4 WRITE !,"Non-VA "_DRUGNM
- DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +5 DO TEXT^ORQ12(.GMTSPSTN,ORDER,80)
- +6 SET DIWL=IND1
- SET DIWR=60
- SET ORIG=2
- +7 if $EXTRACT(GMTSPSTN(1),1,14)="Non-VA Change "
- Begin DoDot:1
- +8 FOR OALINE=2:1:$ORDER(GMTSPSTN(":"),-1)
- IF $EXTRACT(GMTSPSTN(OALINE),1,3)="to "
- SET ORIG=OALINE+1
- QUIT
- End DoDot:1
- +9 FOR OALINE=ORIG:1:$ORDER(GMTSPSTN(":"),-1)
- Begin DoDot:1
- +10 SET X=$$LSIG($GET(GMTSPSTN(OALINE)))
- +11 DO ^DIWP
- End DoDot:1
- +12 SET WLINE=0
- FOR
- SET WLINE=$ORDER(^UTILITY($JOB,"W",DIWL,WLINE))
- if '+WLINE
- QUIT
- Begin DoDot:1
- +13 WRITE !?DIWL,$GET(^UTILITY($JOB,"W",DIWL,WLINE,0))
- +14 DO CKP
- End DoDot:1
- if $DATA(GMTSQIT)
- QUIT
- +15 WRITE !
- DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +16 QUIT
- +1 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- WRITE !
- +2 DO TEXTPRNT("FOOTER1")
- +3 QUIT
- +1 NEW LASTREL,FOOTTXT,DAYSSUPP,STATUS
- +2 KILL ^TMP($JOB,"GMTSPSTN")
- +3 SET PACKREF=$$PKGID^ORX8(ORDER)
- +4 SET LASTREL=$$LRD(PACKREF)
- +5 if LASTREL<$$FMADD^XLFDT(DT,-365)
- QUIT
- +6 if $PIECE(PSNUM,";")["N"
- QUIT
- +7 DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +8 WRITE !,"OPT "_DRUGNM
- DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +9 DO RX^PSO52API(DFN,"GMTSPSTN",PACKREF)
- +10 SET STATUS=$PIECE($GET(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,100)),U,2)
- +11 SET DAYSSUPP=$GET(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,8))
- +12 SET FOOTTXT="("_STATUS_"/"_DAYSSUPP_" Days Supply Last Released: "_$$FMTE^XLFDT(LASTREL,"2D")_")"
- +13 WRITE $$RJ^XLFSTR(FOOTTXT,74)
- DO CKP
- if $DATA(GMTSQIT)
- QUIT
- +14 SET SIGLINE=0
- FOR
- SET SIGLINE=$ORDER(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,"M",SIGLINE))
- if '+SIGLINE
- QUIT
- Begin DoDot:1
- +15 WRITE !?IND1,$GET(^TMP($JOB,"GMTSPSTN",DFN,PACKREF,"M",SIGLINE,0))
- +16 DO CKP
- End DoDot:1
- if $DATA(GMTSQIT)
- QUIT
- +17 DO CKP
- +18 QUIT
- NVADT() ;Replaces call previously in ^PSOQCF04
- +1 NEW NVAL,NVARR
- +2 DO ^PSOHCSUM
- +3 if '$DATA(^TMP("PSOO",$JOB,"NVA"))
- QUIT ""
- +4 SET NVAL=0
- FOR
- SET NVAL=$ORDER(^TMP("PSOO",$JOB,"NVA",NVAL))
- if '+NVAL
- QUIT
- Begin DoDot:1
- +5 SET NVADT=9999999-$PIECE($GET(^TMP("PSOO",$JOB,"NVA",NVAL,0)),"^",5)
- +6 SET NVARR(NVADT)=""
- End DoDot:1
- +7 SET NVADT=$ORDER(NVARR(0))
- if NVADT=9999999
- QUIT ""
- +8 QUIT 9999999-NVADT
- LSIG(SIG) ;Expand a SIG
- +1 NEW P,SGY,X,%
- +2 ;
- SET SGY=""
- FOR P=1:1:$LENGTH(SIG," ")
- SET X=$PIECE(SIG," ",P)
- if X]""
- Begin DoDot:1
- +3 IF $DATA(^PS(51,"A",X))
- SET %=^(X)
- SET X=$PIECE(%,"^")
- IF $PIECE(%,"^",2)]""
- SET Y=$PIECE(SIG," ",P-1)
- SET Y=$EXTRACT(Y,$LENGTH(Y))
- if Y>1
- SET X=$PIECE(%,"^",2)
- +4 SET SGY=SGY_X_" "
- End DoDot:1
- +5 QUIT SGY
- LRD(PACKREF) ;Calculate LAST RELEASE DATE as latest of original + refill relDates
- +1 NEW RELDT,REFDT,CTR,ANS
- +2 KILL ^TMP($JOB,"GMTSLRD")
- +3 SET ANS=""
- +4 DO RX^PSO52API(DFN,"GMTSLRD",PACKREF,,"3,R")
- +5 SET RELDT=$GET(^TMP($JOB,"GMTSLRD",DFN,PACKREF,31))
- +6 SET ANS=RELDT
- +7 ;
- SET CTR=0
- FOR
- SET CTR=$ORDER(^TMP($JOB,"GMTSLRD",DFN,PACKREF,"RF",CTR))
- if '+CTR
- QUIT
- Begin DoDot:1
- +8 SET REFDT=$GET(^TMP($JOB,"GMTSLRD",DFN,PACKREF,"RF",CTR,17))
- +9 IF REFDT>ANS
- SET ANS=REFDT
- End DoDot:1
- +10 KILL ^TMP($JOB,"GMTSLRD")
- +11 QUIT ANS
- +12 ;
- CKP DO CKP^GMTSUP
- QUIT
- +1 ;
- GETPKG(ORDER) ;GET PACKAGE TYPE, added by GMTS*2.7*132
- +1 NEW PKGIEN,PKGTYPE
- +2 SET PKGIEN=$$GET1^DIQ(100,ORDER_",",12,"I")
- +3 SET PKGTYPE=$$GET1^DIQ(9.4,PKGIEN_",",.01,"I")
- +4 IF PKGTYPE="INPATIENT MEDICATIONS"
- QUIT "I"
- +5 IF PKGTYPE="OUTPATIENT PHARMACY"
- QUIT "O"
- +6 QUIT $$GET1^DIQ(100,ORDER_",",10,"I")
- HEADTXT1 ;;
- +1 ;;INCLUDED IN THIS LIST: Alphabetical list of active outpatient
- +2 ;;prescriptions dispensed from this VA (local) and dispensed from another
- +3 ;;VA or DoD facility (remote) as well as inpatient orders (local pending and
- +4 ;;active), local clinic medications, locally documented non-VA medications,
- +5 ;;and local prescriptions that have expired or been discontinued in the past
- +6 ;;90 days.
- +7 ;;
- +8 ;;$$END
- HEADTXT2 ;;
- +1 ;;***NOTE*** The display of VA prescriptions dispensed from another VA or
- +2 ;;DoD facility (remote) is limited to active outpatient prescription entries
- +3 ;;matched to National Drug File at the originating site and may not include
- +4 ;;some items such as investigational drugs, compounds, etc.
- +5 ;;
- +6 ;;NOT INCLUDED IN THIS LIST: Medications self-entered by the patient into
- +7 ;;personal health records (i.e. My HealtheVet) are NOT included in this
- +8 ;;list. Non-VA medications documented outside this VA, remote inpatient
- +9 ;;orders (regardless of status) and remote clinic medications are NOT
- +10 ;;included in this list. The patient and provider must always discuss
- +11 ;;medications the patient is taking, regardless of where the medication was
- +12 ;;dispensed or obtained.
- +13 ;;$$END