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

PSODOSCL.m

Go to the documentation of this file.
  1. PSODOSCL ;BIR/RTR-Dose Call Utility Routine ;10/07/08
  1. ;;7.0;OUTPATIENT PHARMACY;**251,402**;DEC 1997;Build 8
  1. ;
  1. ;Reference to ^PSDRUG( supported by DBIA 221
  1. ;Reference to ^PS(50.7 supported by DBIA 2223
  1. ;External reference to $$FRQ^PSSDSAPI supported by DBIA 5425
  1. ;External reference to $$MRT^PSSDSAPI supported by DBIA 5425
  1. ;External reference to $$UNIT^PSSDSAPI supported by DBIA 5425
  1. ;External reference to $$DOSE^PSSDSAPD supported by DBIA 5426
  1. ;PSODARTX = Literal Subscript
  1. ;PSODAR = Internal Prescription Number from Prescription (#52) File
  1. ;
  1. RX(PSODARTX,PSODARX) ;
  1. ;use Psodar
  1. N PSODAR1,PSODAR2,PSODARZ,PSODARL,PSODARCT,PSODAR6
  1. S PSODARZ=$G(^PSRX(PSODARX,0))
  1. I '$P(PSODARZ,"^",2)!('$P(PSODARZ,"^",6)) Q
  1. S PSODAR1("PACKAGE")="O"
  1. S PSODAR1("OI")=$P($G(^PSDRUG($P(PSODARZ,"^",6),2)),"^")
  1. S PSODARCT=0
  1. F PSODARL=0:0 S PSODARL=$O(^PSRX(PSODARX,6,PSODARL)) Q:'PSODARL D
  1. .S PSODAR1(PSODARL,"DRUG_IEN")=$P(PSODARZ,"^",6)
  1. .S PSODAR1(PSODARL,"DRUG_NM")=$P($G(^PSDRUG($P(PSODARZ,"^",6),0)),"^")
  1. .I PSODAR1(PSODARL,"DRUG_NM")="",PSODAR1("OI") S PSODAR1(PSODARL,"DRUG_NM")=$P($G(^PS(50.7,PSODAR1("OI"),0)),"^")
  1. .S PSODAR1(PSODARL,"RX_NUM")="O;"_PSODARX_";PROSPECTIVE;"_PSODARL
  1. .S PSODAR6=$G(^PSRX(PSODARX,6,PSODARL,0))
  1. .S PSODAR2(PSODARL,"CONJ")=$P(PSODAR6,"^",6)
  1. .S PSODAR2(PSODARL,"DRATE")=$P(PSODAR6,"^",5)
  1. .D DOSE
  1. .I $P(PSODAR6,"^",8)'="" S PSODAR2(PSODARL,"SCHEDULE")=$P(PSODAR6,"^",8)
  1. .;S PSODAR1(PSODARL,"DURATION")=1
  1. .;S PSODAR1(PSODARL,"DURATION_RT")="DAY"
  1. .I $P(PSODAR6,"^",7) S PSODAR1(PSODARL,"ROUTE")=$P($$MRT^PSSDSAPI($P(PSODAR6,"^",7)),"^",2)
  1. .S PSODARCT=1
  1. I 'PSODARCT Q
  1. S PSODAR2("CONTEXT")="OP-UD" ;; cmf - Mocha 2.1/PSO*402 change
  1. D DOSE^PSSDSAPD(.PSODARTX,$P(PSODARZ,"^",2),.PSODAR2,.PSODAR1)
  1. Q
  1. ;
  1. ;
  1. DOSE ;
  1. N PSODARUN,PSODARUX,PSODARFL
  1. S PSODARFL=0
  1. I $P(PSODAR6,"^"),$P(PSODAR6,"^",2),$P(PSODAR6,"^",3) D
  1. .S PSODARR(PSODARL,"DOSE_AMT")=$P(PSODAR6,"^")
  1. .S PSODARUN=$P($G(^PS(50.607,+$P(PSODAR6,"^",3),0)),"^")
  1. .Q:$G(PSODARUN)=""
  1. .S PSODARUX=$$UNIT^PSSDSAPI(PSODARUN)
  1. .Q:$G(PSODARUX)=""
  1. .S PSODAR1(PSODARL,"DOSE_AMT")=$P(PSODAR6,"^")
  1. .S PSODAR1(PSODARL,"DOSE_UNIT")=PSODARUX
  1. .S PSODARFL=1
  1. Q:PSODARFL
  1. S PSODAR2(PSODARL,"DO")=$P(PSODAR6,"^")
  1. Q
  1. ;
  1. PEN(PSOSARTX,PSOSARX) ;Pending Order
  1. ;Use PSOSAR
  1. ;This is currently not being called, if ever called, DRUG_NM and OI and PACKAGE
  1. N PSOSAR1,PSOSAR2,PSOSARZ,PSOSARL,PSOSARCT,PSOSAR6,PSOSAR7
  1. S PSOSARZ=$G(^PS(52.41,PSOSARX,0))
  1. I '$P(PSOSARZ,"^",2)!('$P(PSOSARZ,"^",9)) Q
  1. S PSOSARCT=0
  1. F PSOSARL=0:0 S PSOSARL=$O(^PS(52.41,PSOSARX,1,PSOSARL)) Q:'PSOSARL!(PSOSARCT) D
  1. .S PSOSAR1(PSOSARL,"RX_NUM")=PSOSARX
  1. .S PSOSAR1(PSOSARL,"DRUG_IEN")=$P(PSOSARZ,"^",9)
  1. .S PSOSAR6=$G(^PS(52.41,PSOSARX,1,PSOSARL,1))
  1. .S PSOSAR7=$G(^PS(52.41,PSOSARX,1,PSOSARL,2))
  1. .D PDOSE
  1. .I $P(PSOSAR6,"^")'="" S PSOSAR1(PSOSARL,"FREQ")=$$FRQ^PSSDSAPI($P(PSOSAR6,"^"),,"O")
  1. .S PSOSAR1(PSOSARL,"DURATION")=1
  1. .S PSOSAR1(PSOSARL,"DURATION_RT")="DAY"
  1. .I $P(PSOSAR6,"^",8) S PSOSAR1(PSOSARL,"ROUTE")=$P($$MRT^PSSDSAPI($P(PSOSAR6,"^",8)),"^",2)
  1. .S PSOSARCT=1
  1. I 'PSOSARCT Q
  1. S PSOSAR2("CONTEXT")="OP-UD" ;; cmf - Mocha 2.1/PSO*402 change
  1. D DOSE^PSSDSAPD(PSOSARTX,$P(PSOSARZ,"^",2),.PSOSAR2,.PSOSAR1)
  1. Q
  1. ;
  1. ;
  1. PDOSE ;
  1. N PSOSARUN,PSOSARUX,PSOSARFL
  1. S PSOSARFL=0
  1. I $P(PSOSAR7,"^"),$P(PSOSAR7,"^",2),$P(PSOSAR6,"^",9) D
  1. .S PSOSARR(PSOSARL,"DOSE_AMT")=$P(PSOSAR7,"^")
  1. .S PSOSARUN=$P($G(^PS(50.607,+$P(PSOSAR6,"^",9),0)),"^")
  1. .Q:$G(PSOSARUN)=""
  1. .S PSOSARUX=$$UNIT^PSSDSAPI(PSOSARUN)
  1. .Q:$G(PSOSARUX)=""
  1. .S PSOSAR1(PSOSARL,"DOSE_AMT")=$P(PSOSAR7,"^")
  1. .S PSOSAR1(PSOSARL,"DOSE_UNIT")=PSOSARUX
  1. .S PSOSARFL=1
  1. Q:PSOSARFL
  1. S PSOSAR2(PSOSARL,"DO")=$P(PSOSAR7,"^")
  1. Q
  1. ;
  1. ;
  1. FIN(PSOXARTX,PSOXARX,PSOXARY) ;
  1. ;Set up variables and make Dose Call
  1. ;Assumes PSODFN is defined
  1. ;Don't set arrays that are passed in
  1. ;use PSOXAR
  1. N PSOXAR1,PSOXAR2,PSOXARL1,PSOXARL2
  1. I '$G(PSODFN)!('$G(PSOXARY("IEN"))) Q
  1. S PSOXAR1("PACKAGE")="O"
  1. S PSOXAR1("OI")=$P($G(^PSDRUG(PSOXARY("IEN"),2)),"^")
  1. F PSOXARL1=0:0 S PSOXARL1=$O(PSOXARX("DOSE",PSOXARL1)) Q:'PSOXARL1 D
  1. .S PSOXAR1(PSOXARL1,"RX_NUM")="O;1;PROSPECTIVE;"_PSOXARL1
  1. .S PSOXAR1(PSOXARL1,"DRUG_IEN")=PSOXARY("IEN")
  1. .S PSOXAR1(PSOXARL1,"DRUG_NM")=$P($G(^PSDRUG(PSOXARY("IEN"),0)),"^")
  1. .I PSOXAR1(PSOXARL1,"DRUG_NM")="",PSOXAR1("OI") S PSOXAR1(PSOXARL1,"DRUG_NM")=$P($G(^PS(50.7,PSOXAR1("OI"),0)),"^")
  1. .S PSOXAR2(PSOXARL1,"CONJ")=$G(PSOXARX("CONJUNCTION",PSOXARL1))
  1. .S PSOXAR2(PSOXARL1,"DRATE")=$G(PSOXARX("DURATION",PSOXARL1))
  1. .D FDOSE
  1. .I $G(PSOXARX("SCHEDULE",PSOXARL1))'="" S PSOXAR2(PSOXARL1,"SCHEDULE")=PSOXARX("SCHEDULE",PSOXARL1)
  1. .;S PSOXAR1(PSOXARL1,"DURATION")=1
  1. .;S PSOXAR1(PSOXARL1,"DURATION_RT")="DAY"
  1. .I $G(PSOXARX("ROUTE",PSOXARL1)) S PSOXAR1(PSOXARL1,"ROUTE")=$P($$MRT^PSSDSAPI(PSOXARX("ROUTE",PSOXARL1)),"^",2)
  1. S PSOXAR2("CONTEXT")="OP-UD" ;; cmf - Mocha 2.1/PSO*402 change
  1. D DOSE^PSSDSAPD(.PSOXARTX,PSODFN,.PSOXAR2,.PSOXAR1)
  1. Q
  1. ;
  1. FDOSE ;
  1. N PSOXARUN,PSOXARUX,PSOXARFL
  1. S PSOXARFL=0
  1. I $G(PSOXARX("DOSE",PSOXARL1)),$G(PSOXARX("UNITS",PSOXARL1)),$G(PSOXARX("DOSE ORDERED",PSOXARL1)) D
  1. .S PSOXARUN=$P($G(^PS(50.607,+$G(PSOXARX("UNITS",PSOXARL1)),0)),"^")
  1. .Q:PSOXARUN=""
  1. .S PSOXARUX=$$UNIT^PSSDSAPI(PSOXARUN)
  1. .Q:$G(PSOXARUX)=""
  1. .S PSOXAR1(PSOXARL1,"DOSE_AMT")=PSOXARX("DOSE",PSOXARL1)
  1. .S PSOXAR1(PSOXARL1,"DOSE_UNIT")=PSOXARUX
  1. .S PSOXARFL=1
  1. Q:PSOXARFL
  1. S PSOXAR2(PSOXARL1,"DO")=$G(PSOXARX("DOSE",PSOXARL1))
  1. Q