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

PSSVIDRG.m

Go to the documentation of this file.
  1. PSSVIDRG ;BIR/PR,WRT-ADD OR EDIT IV DRUGS ;June 3, 2018@20:00
  1. ;;1.0;PHARMACY DATA MANAGEMENT;**2,10,32,38,125,146,174,189,229**;9/30/97;Build 1
  1. ;
  1. ;Reference to ENIVKV^PSGSETU is supported by DBIA # 2153.
  1. ;Reference to ^PSIV is supported by DBIA # 2155.
  1. ;Reference to ^PSIVHLP1 is supported by DBIA # 2156.
  1. ;Reference to ^PSIVXU is supported by DBIA # 2157.
  1. ;
  1. ENS ;Enter here to enter/edit solutions
  1. N FI,PSPRNM S DRUGEDIT=1,FI=52.7
  1. L +^PS(FI):$S($G(DILOCKTM)>0:DILOCKTM,1:3) E W $C(7),!!,"Someone else is entering drugs ... try later !",!! G K
  1. ENS1 ;
  1. ; PSS*1*146 Compare and confirm SOLUTION Print name change
  1. N DA,DIC,DLAYGO,II,PSDA,PSI,PSSY,PSSDG,PSSEL1,PSSDRG
  1. NS2 S PSI=0 I $G(DISPDRG),$O(^PS(52.7,"AC",DISPDRG,0)) S PSSY=0 F S PSSY=$O(^PS(52.7,"AC",DISPDRG,PSSY)) Q:'PSSY S PSI=PSI+1,PSSY(PSI)=PSSY
  1. ;I PSI=1 S DIC("B")=$G(PSSY(1)) S DIC=FI,DIC(0)="QEALMNTV",DLAYGO=52.7,DIC("T")="" D ^DIC I Y<0 K PSFLGA G K1
  1. I PSI=0 S DIC=FI,DIC(0)="QEALMNTV",DLAYGO=52.7 D ^DIC I Y<0 K PSFLGA G K1
  1. ;
  1. ENS2 ; IV Solutions Editing
  1. N PSSQOX
  1. S PSSQUIT=0,PSSQOX=1
  1. I '$G(PSFLGA)&(PSI>0) F D Q:$G(Y)
  1. . W !!," ",$$GET1^DIQ(50,DISPDRG,.01)," currently linked to IV Solutions:",!
  1. . S (PSDA,II)=0 F S PSDA=$O(PSSY(PSDA)) Q:'PSDA S II=II+1 W !,?3,II_". ",$P(^PS(52.7,$G(PSSY(PSDA)),0),"^")_" "_$P(^PS(52.7,$G(PSSY(PSDA)),0),"^",3)
  1. . W !!,"Select "_$S(PSI=1:1,1:"1-"_PSI)_" from list above or type 'NEW' to link to a new IV Solution: "
  1. . R X:DTIME I '$T!("^"[X) S Y=-1 Q
  1. . W ! I $$UP^XLFSTR(X)="NEW" D NEW(52.7) Q
  1. . I '$D(PSSY(X)) W !!,"Select the number corresponding to the IV SOLUTION you want to edit",!,"or type 'NEW' to link ",$$GET1^DIQ(50,DISPDRG,.01)," to a new IV SOLUTION.",$C(7) Q
  1. . I $D(PSSY(X)) S Y=$G(PSSY(X))
  1. G K1:($G(Y)<0)
  1. W ! K PSSEL1 S PSSASK="SOLUTIONS",DRUG=+Y,DIE=FI,(DA,ENTRY)=+Y,DR=".01" D EECK G K1:$G(PSSEL1)="^" I $G(PSSEL1)=2 S Y=0 W ! G NS2
  1. N PSSQUIT,PSSINADT S PSSQUIT=0
  1. S PSSINADT=$$GET1^DIQ(52.7,ENTRY,8,"I")
  1. S PSSDRG=$P($G(^PS(52.7,ENTRY,0)),"^",2),DA=ENTRY
  1. S DIE="^PS(52.7,",DR="D PRNMHD^PSSVIDRG;.01;.01///^S X=$$PRNM^PSSVIDRG();.02;"
  1. S DR=DR_"1///^S X=$$GEND^PSSVIDRG($S($G(DISPDRG):DISPDRG,$G(PSSDRG):PSSDRG,1:""""));D GETD^PSSVIDRG;"
  1. S DR=DR_"2:7;@8;8;D IVSOLINA^PSSVIDRG;10:15;17:99999"
  1. N PSSENTRY I $G(DA) S PSSENTRY=DA D ^DIE I '$G(PSSQUIT) S PSSQOX=0 D MFS^PSSDEE K PSFLGS,PSSY
  1. Q
  1. ENA ;Enter here to enter/edit additives.
  1. N FI,PSPRNM S DRUGEDIT=1,FI=52.6
  1. L +^PS(FI):$S($G(DILOCKTM)>0:DILOCKTM,1:3) E W $C(7),!!,"Someone else is entering drugs ... try later !",!! G K
  1. ;
  1. ENA1 ;
  1. ; PSS*1*146 Compare and confirm ADDITIVE Print name change
  1. N DA,DIC,DIE,DLAYGO,PSI,PSSY,PSSEL1,PSSDRG
  1. NA2 S PSI=0
  1. I $G(DISPDRG),$O(^PS(52.6,"AC",DISPDRG,0)) D
  1. . S PSSY=0 F S PSSY=$O(^PS(52.6,"AC",DISPDRG,PSSY)) Q:'PSSY S PSI=PSI+1,PSSY(PSI)=PSSY
  1. ;I PSI=1 S DIC("B")=$G(PSSY(1)) S DIC=FI,DIC(0)="QEALMNTV",DLAYGO=52.6,DIC("T")="" D ^DIC I Y<0 K PSFLGA G K1
  1. I PSI=0 S DIC=FI,DIC(0)="QEALMNTV",DLAYGO=52.6 D ^DIC I Y<0 K PSFLGA G K1
  1. ;
  1. ENA2 ; IV Additives Editing
  1. N PSSQOX
  1. S PSSQUIT=0,PSSQOX=1
  1. I '$G(PSFLGA)&(PSI>0) F D Q:$G(Y)
  1. . W !!," ",$$GET1^DIQ(50,DISPDRG,.01)," currently linked to the following IV Additives:",!
  1. . S (PSDA,II)=0 F S PSDA=$O(PSSY(PSDA)) Q:'PSDA D
  1. .. S PSSY15=$P(^PS(52.6,$G(PSSY(PSDA)),0),"^",15) I $E($G(PSSY15))="." S PSSY15="0"_PSSY15
  1. .. S II=II+1 W !,?3,II_". ",$P(^PS(52.6,$G(PSSY(PSDA)),0),"^"),?32,"Additive Strength: "_$S($G(PSSY15)="":"N/A",1:$G(PSSY15))_" "_$S($G(PSSY15)="":"",1:$$GET1^DIQ(52.6,$G(PSSY(PSDA)),2))
  1. .. W:$D(^PSDRUG(+$P(^PS(52.6,$G(PSSY(PSDA)),0),"^",2),0)) !?15,$P(^(0),"^",10)
  1. .. F PSIV=0:0 S PSIV=$O(^PS(52.6,$G(PSSY(PSDA)),1,PSIV)) Q:'PSIV D
  1. ... W !?7,"- ",$P(^(PSIV,0),"^")," - Quick Code Strength: ",$S($P($G(^PS(52.6,$G(PSSY(PSDA)),1,PSIV,0)),"^",2)'="":$P($G(^PS(52.6,$G(PSSY(PSDA)),1,PSIV,0)),"^",2),1:"N/A")
  1. ... W " Schedule: ",$S($P($G(^PS(52.6,$G(PSSY(PSDA)),1,PSIV,0)),"^",5)'="":$P($G(^PS(52.6,$G(PSSY(PSDA)),1,PSIV,0)),"^",5),1:"N/A"),!
  1. . W !!,"Select "_$S(PSI=1:1,1:"1-"_PSI)_" from list above or type 'NEW' to link to a new IV Additive: "
  1. . R X:DTIME I '$T!("^"[X) S Y=-1 Q
  1. . W ! I $$UP^XLFSTR(X)="NEW" D NEW(52.6) Q
  1. . I '$D(PSSY(X)) W !!,"Select the number corresponding to the IV ADDITIVE you want to edit",!,"or type 'NEW' to link ",$$GET1^DIQ(50,DISPDRG,.01)," to a new IV ADDITIVE.",$C(7) Q
  1. . I $D(PSSY(X)) S Y=$G(PSSY(X))
  1. G K1:($G(Y)<0)
  1. K PSSEL1 S PSSASK="ADDITIVES",DRUG=+Y,DIE=FI,(DA,ENTRY)=+Y D EECK G K1:$G(PSSEL1)="^" I $G(PSSEL1)=2 S Y=0 W ! G NA2
  1. S PSSDRG=$P($G(^PS(52.6,ENTRY,0)),"^",2),DIE="^PS(52.6,",DA=ENTRY,DR="[PSSIV ADD]"
  1. N PSSENTRY I '$G(PSSQUIT),$G(DA) S PSSENTRY=DA D ^DIE S ENTRY=PSSENTRY,PSSQOX=0 D MFA^PSSDEE
  1. K PSFLGA,PSSY,PSSY15
  1. Q
  1. ENC ;Enter here to enter/edit IV Categories
  1. ;S X="PSIVXU" X ^%ZOSF("TEST") I D ^PSIVXU Q:$D(XQUIT) K DA,DIC,DIE,DR,DLAYGO S DIC="^PS(50.2,",DIC(0)="AEQL",DLAYGO=50.2 D ^DIC G:Y<0 K S DIE=DIC,DR=".01;1",DA=+Y D ^DIE G K
  1. Q
  1. K1 ;
  1. L -^PS(FI)
  1. K S X="PSGSETU" X ^%ZOSF("TEST") I D ENIVKV^PSGSETU
  1. KDRG K B,DA,DG,DIC,DIE,DIJ,DIX,DIY,DIYS,DLAYGO,DO,DRUG,DRUGEDIT,FI,I,J,P,PSIV,PSIVAT,PSSIVDRG,PSIVSC,XT,Z
  1. Q
  1. ;
  1. GETD ;See if generic drug is inactive in file 50.
  1. I $D(^PSDRUG(X,"I")),^("I"),(DT+1>+^("I")) D
  1. . W $C(7),$C(7),!!,"This drug is inactive and will not be selectable during IV order entry.",!
  1. . S ^PS(FI,DRUG,"I")=^PSDRUG(X,"I")
  1. Q
  1. ENTDRG ;This module is no longer utilized by the Inpatient Medications application.
  1. ;Will print word-processing field in IV add. file (52.6) and
  1. ;IV sol. file (52.7).
  1. ;
  1. Q
  1. ;S X="PSIV" X ^%ZOSF("TEST") I D ^PSIV Q:$D(XQUIT)
  1. S X="PSIV" X ^%ZOSF("TEST") I D ^PSIVHLP1 Q:$D(XQUIT)
  1. N P W !!,"Are you inquiring on" S X="... an IV ADDITIVE or IV SOLUTION (A/S): ^ADDITIVE^^ADDITIVE,SOLUTION" D ENQ^PSIV S X=$E(X) Q:"^"[X I X["?" S HELP="DRGINQ" D ^PSIVHLP1 G ENTDRG
  1. S FI=$S(X["A":52.6,1:52.7) N D0,D1,DA,DI,DIE,DP,DR,DQ
  1. DRG F Y=0:0 W ! X ^DD(55.11,.01,12.1) K DA,DIC S DIC="^PS("_FI_",",DIC(0)="QEAM" D ^DIC G:Y<0 KDRG S PSSIVDRG=+Y D WPH,WP
  1. G KDRG
  1. WPH ;
  1. W:$Y @IOF W ! F Y=1:1:79 W "-"
  1. W !,"Drug information on: ",$P(^PS(FI,PSSIVDRG,0),"^")
  1. W !?7,"Last updated: " W:'$D(^PS(FI,PSSIVDRG,4,0)) "N/A" I $D(^(0)) S Y=$P(^(0),"^",5) X ^DD("DD") W $P(Y,"@")," ",$P(Y,"@",2)
  1. W ! Q
  1. WP W ! I '$D(^PS(FI,PSSIVDRG,4,0)) W !,"*** No information on file. ***"
  1. F Z=0:0 S Z=$O(^PS(FI,PSSIVDRG,4,Z)) Q:'Z W !,^(Z,0) I $Y+5>IOSL W $C(7),!!,"Press return key: " R I:DTIME Q:'$T!(I["^") D WPH
  1. W ! F Y=1:1:79 W "-"
  1. Q
  1. ENT ;
  1. ;Will print out information on IV DRUGS
  1. Q
  1. ;S X="PSIV" X ^%ZOSF("TEST") I D ^PSIV Q:$D(XQUIT)
  1. S X="PSIV" X ^%ZOSF("TEST") I D ^PSIVHLP1 Q:$D(XQUIT)
  1. ;
  1. BEG W !!,"Are you printing drug information from ..." S X="the IV ADDITIVE file or IV SOLUTION file ? ^ADDITIVE^^ADDITIVE,SOLUTION" D ENQ^PSIV G:"^"[X K I X["?" S HELP="DRGINQ" D ^PSIVHLP1 G BEG
  1. S L=0,DIC="^PS("_$S(X["A":52.6,1:52.7)_"," D EN1^DIP D ^%ZISC G K
  1. ELECTRO ;Edit Electrolyte file
  1. S X="PSIVXU" X ^%ZOSF("TEST") I D ^PSIVXU Q:$D(XQUIT) K DA,DIC S DIC="^PS(50.4,",DIC(0)="AEQLM",DLAYGO=50.4 D ^DIC G:Y<0 K
  1. S DIE=DIC,DR="[PSSJIDE]",DA=+Y D ^DIE G ELECTRO
  1. Q
  1. EECK I $D(PSSZ) S FILE=$S(PSSASK="ADDITIVES":$G(^PS(52.6,ENTRY,0)),1:$G(^PS(52.7,ENTRY,0))),PSSIEN=$P(FILE,"^",2) D:PSSIEN']"" PASSIN I PSSIEN'=DISPDRG D:$D(^PSDRUG(PSSIEN)) ECK,EECK1 D
  1. . W !,"Do you really want to link this ",$S(PSSASK="ADDITIVES":"Additive",1:"Solution")," to ",$P(^PSDRUG(DISPDRG,0),"^",1)
  1. . F S %=2 D YN^DICN Q:% W !," (A 'YES' or 'NO' response is required.)"
  1. . I %Y="^" S PSSEL1="^" Q
  1. . S PSSEL1=%
  1. Q
  1. EECK1 Q:'$D(^PSDRUG(PSSIEN,0)) W !,"This Additive or Solution is linked to ",$P(^PSDRUG(PSSIEN,0),"^",1),".",!,"You are editing dispense drug ",$P(^PSDRUG(DISPDRG,0),"^",1),".",!
  1. Q
  1. ECK W !,"You are editing a Additive or Solution which is linked to a different",!,"dispense drug from the one you are currently editing."
  1. Q
  1. SOI I $D(^PS(59.7,1,80)),$P(^PS(59.7,1,80),"^",2)>1 W !!,"You are NOW in the ORDERABLE ITEM matching for Solutions." S Y=ENTRY_"^"_$P(^PS(52.7,ENTRY,0),"^",1),PSMASTER=1 D MAS^PSSSOLIT K PSMASTER
  1. Q
  1. ADDOI I $D(^PS(59.7,1,80)),$P(^PS(59.7,1,80),"^",2)>1 W !!,"You are NOW in the ORDERABLE ITEM matching for Additives." S Y=ENTRY_"^"_$P(^PS(52.6,ENTRY,0),"^",1),PSMASTER=1 D MAS^PSSADDIT K PSMASTER
  1. Q
  1. PASSIN S FILE=$S(PSSASK="ADDITIVES":$G(^PS(52.6,ENTRY,0)),1:$G(^PS(52.7,ENTRY,0))) S (X,PSSIEN)=DISPDRG ;146
  1. Q
  1. MASTER F PSSOR=0:0 S PSSOR=$O(^PS(50.7,PSSOR)) Q:'PSSOR D EN2^PSSHL1(PSSOR,"MUP")
  1. Q
  1. PRNMHD ; PSS*1*146 Hold the print name when editing
  1. N FI K PSPRNM
  1. S FI=DIC I FI'["^" S FI="^PS("_FI_","
  1. S FI=FI_DA_",0)",PSPRNM=$P($G(@FI),"^")
  1. Q
  1. PRNM() ; PSS*1*146 compare and confirm Print name change
  1. N PRNMDONE,%,FI,PRNAME,DUP,DUPLIC S PRNMDONE=0
  1. S FI=DIC I FI'["^" S FI="^PS("_FI_","
  1. S FI=FI_DA_",0)",PRNAME=$P($G(@FI),"^")
  1. I (PSPRNM]"")&(PRNAME]"")&(PSPRNM'=PRNAME) F Q:$G(PRNMDONE) D
  1. . W !," ARE YOU SURE YOU WANT TO CHANGE THE PRINT NAME TO "_PRNAME
  1. . S %=2 D YN^DICN
  1. . S:(%=1) PSPRNM=PRNAME S:% PRNMDONE=1
  1. . I %Y="^" S PSSQUIT=1,PRNMDONE=1
  1. . I 'PRNMDONE W !," Answer with 'Yes' or 'No'.",$C(7),! Q
  1. . W !," PRINT NAME set to "_PSPRNM
  1. Q PSPRNM
  1. GEND(CUR) ;PSS*1*146
  1. ;Ask and Confirm generic drug.
  1. ;Returns Selected drug IEN (file 50)
  1. ; CUR -> Default (Current Drug)
  1. N DIC,%,PSSEL,Y,X
  1. S PSSEL=0,DIC=50,DIC("A")="GENERIC DRUG: ",DIC(0)="AEMQ",DIC("B")=$S($G(CUR):CUR,1:"")
  1. F D Q:PSSEL=1
  1. . D ^DIC W:(Y>0)&($G(CUR)']"") " ??" I $G(CUR)]""!(Y'>0),$G(DUOUT)!$G(DTOUT) S PSSEL=1,PSSQUIT=1 Q
  1. . I +Y=+CUR D I PSSEL=1 Q
  1. . . I PSSASK="ADDITIVES",$D(^PS(52.6,"AC",+Y,+$G(DA))) S PSSEL=1 Q
  1. . . I PSSASK="SOLUTIONS",$D(^PS(52.7,"AC",+Y,+$G(DA))) S PSSEL=1 Q
  1. . I Y>0 F D Q:$G(PSSEL)
  1. . . N CURADD,CURGEND
  1. . . S CURADD=$S($G(PSSASK)="ADDITIVES":$$GET1^DIQ(52.6,$G(DA),.01,"E"),1:$$GET1^DIQ(52.7,$G(DA),.01,"E"))
  1. . . S CURGEND=$$GET1^DIQ($S($G(PSSASK)="ADDITIVES":52.6,1:52.7),$G(DA),1,"E")
  1. . . W !!," You are about to change the GENERIC DRUG linked to this "_$S($G(PSSASK)="ADDITIVES":"ADDITIVE.",1:"SOLUTION.")
  1. . . W !," "_$S($G(PSSASK)="ADDITIVES":"ADDITIVE",1:"SOLUTION")_" "_$G(CURADD)_" is "_$S($G(CURGEND)="":"not ",1:"")_"currently linked to "_$S($G(CURGEND)="":"any",1:"")
  1. . . W !," GENERIC DRUG "_$G(CURGEND)_"."
  1. . . W !!," Are you sure you want to link "_$S($G(PSSASK)="ADDITIVES":"ADDITIVE",1:"SOLUTION")_" "_$G(CURADD)
  1. . . W !," to GENERIC DRUG "_$$GET1^DIQ(50,+Y,.01,"E")
  1. . . S %=2 D YN^DICN S:% PSSEL=% I %Y="^" S PSSQUIT=1,DUOUT=1,PSSEL=1 Q
  1. . . I 'PSSEL W !," Answer with 'Yes' or 'No'.",$C(7),! Q
  1. Q $S($G(DUOUT)!$G(DTOUT)!(Y<0):"^",1:+Y)
  1. ;
  1. NEW(FI) ; add new additive/solution
  1. N DA,DIC,DIE,DR,DLAYGO
  1. S (DLAYGO,DIC)=FI,DIC(0)="QEALMNTV",DIC("T")="" D ^DIC K DIC
  1. Q
  1. ;
  1. IVSOLINA ; Checking for Duplicate IV Solution Volume when INACTIVATION DATE is removed
  1. ; Global variable: PSSINADT - INACTIVATION DATE value being deleted
  1. I '$G(PSSINADT),$$GET1^DIQ(52.7,DA,8,"I") S PSSINADT=$$GET1^DIQ(52.7,DA,8,"I")
  1. ;I +$G(PSSINADT),('X&PSSINADT)!(X&(X'=PSSINADT)) D
  1. I 'X!(X>DT) D
  1. . N OI
  1. . I $$GET1^DIQ(52.7,DA,17,"I") D
  1. . . S OI=+$$GET1^DIQ(52.7,DA,9,"I")
  1. . . I $$CKDUPSOL^PSSDDUT2(OI,DA,+$$GET1^DIQ(52.7,DA,2),1) D
  1. . . . S $P(^PS(52.7,DA,"I"),"^")=$G(PSSINADT)
  1. . . . S Y="@8"
  1. . . E S PSSINADT=X
  1. E S PSSINADT=X
  1. Q