| [613] | 1 | PSSUTIL1 ;BIR/RTR-Utility routine ;08/21/00
 | 
|---|
 | 2 |  ;;1.0;PHARMACY DATA MANAGEMENT;**38,66,69**;9/30/97
 | 
|---|
 | 3 |  ;Reference to ^PS(50.607 supported by DBIA #2221
 | 
|---|
 | 4 |  ;Reference to ^PSNAPIS supported by DBIA 2531
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 | EN(PSSDRIEN) ;
 | 
|---|
 | 7 |  N PSSMASH,PSSMNDFS,PSSMSSTR,PSSMUNIT,PSSUNZ,PSSMA,PSSMB,PSSMA1,PSSMB1,PSSUNX,PSSMASH2,PSSMASH3,PSSNAT1,PSSNAT3,PSSNODEU
 | 
|---|
 | 8 |  I '$G(PSSDRIEN) Q "|^^^^^99PSU"
 | 
|---|
 | 9 |  S PSSMSSTR=$P($G(^PSDRUG(PSSDRIEN,"DOS")),"^"),PSSMUNIT=$P($G(^("DOS")),"^",2)
 | 
|---|
 | 10 |  S PSSNAT1=$P($G(^PSDRUG(PSSDRIEN,"ND")),"^"),PSSNAT3=$P($G(^("ND")),"^",3) I PSSNAT1,PSSNAT3 S PSSNODEU=$$DFSU^PSNAPIS(PSSNAT1,PSSNAT3) S PSSMNDFS=$P(PSSNODEU,"^",4) S:'$G(PSSMUNIT) PSSMUNIT=$P(PSSNODEU,"^",5)
 | 
|---|
 | 11 |  S PSSUNZ=$P($G(^PS(50.607,+$G(PSSMUNIT),0)),"^")
 | 
|---|
 | 12 |  I PSSUNZ'["/" Q $S($G(PSSMSSTR)'="":$G(PSSMSSTR),$G(PSSMNDFS)'="":$G(PSSMNDFS),1:"")_"|"_"^^^"_$S($G(PSSMUNIT):$G(PSSMUNIT),1:"")_"^"_$G(PSSUNZ)_"^"_"99PSU"
 | 
|---|
 | 13 |  S PSSMASH=0
 | 
|---|
 | 14 |  I $G(PSSMSSTR),$G(PSSMNDFS),+$G(PSSMSSTR)'=+$G(PSSMNDFS) S PSSMASH=1
 | 
|---|
 | 15 |  I 'PSSMASH Q PSSMSSTR_"|"_"^^^"_$S($G(PSSMUNIT):$G(PSSMUNIT),1:"")_"^"_$G(PSSUNZ)_"^"_"99PSU"
 | 
|---|
 | 16 |  S PSSMA=$P(PSSUNZ,"/"),PSSMB=$P(PSSUNZ,"/",2),PSSMA1=+$G(PSSMA),PSSMB1=+$G(PSSMB)
 | 
|---|
 | 17 |  S PSSMASH2=PSSMSSTR/PSSMNDFS,PSSMASH3=PSSMASH2*($S($G(PSSMB1):$G(PSSMB1),1:1))
 | 
|---|
 | 18 |  S PSSUNX=$G(PSSMA)_"/"_$G(PSSMASH3)_$S('$G(PSSMB1):$G(PSSMB),1:$P(PSSMB,PSSMB1,2))
 | 
|---|
 | 19 |  Q $S($G(PSSMSSTR)'="":$G(PSSMSSTR),$G(PSSMNDFS)'="":$G(PSSMNDFS),1:"")_"|"_"^^^^"_$G(PSSUNX)_"^"_"99PSU"
 | 
|---|
 | 20 |  ;
 | 
|---|
 | 21 |  Q
 | 
|---|
 | 22 |  ;
 | 
|---|
 | 23 | DRG(PSSDD,PSSOI,PSSPK) ;
 | 
|---|
 | 24 |  ; PSSDD - Array of Drugs
 | 
|---|
 | 25 |  ; PSSOI - Orderable Item (Pharmacy)
 | 
|---|
 | 26 |  ; PSSPK - Application Package ("O"-Outpatient;"I"-IV;"X"-Non-VA Med)
 | 
|---|
 | 27 |  ;Return active dispense drugs for package based on Orderable Item 
 | 
|---|
 | 28 |  N PSSL,PSSAP,PSSIN,PSSND
 | 
|---|
 | 29 |  Q:'$G(PSSOI)
 | 
|---|
 | 30 |  I $G(PSSPK)'="O",$G(PSSPK)'="I",$G(PSSPK)'="X" Q
 | 
|---|
 | 31 |  F PSSL=0:0 S PSSL=$O(^PSDRUG("ASP",PSSOI,PSSL)) Q:'PSSL  D
 | 
|---|
 | 32 |  . S PSSIN=$P($G(^PSDRUG(PSSL,"I")),"^"),PSSAP=$P($G(^(2)),"^",3)
 | 
|---|
 | 33 |  . I PSSIN,PSSIN<DT Q
 | 
|---|
 | 34 |  . S PSSND=$P($G(^PSDRUG(PSSL,"ND")),"^")
 | 
|---|
 | 35 |  . I PSSPK="O"!(PSSPK="X") D  Q
 | 
|---|
 | 36 |  . . S:PSSAP[PSSPK PSSDD(PSSL_";"_PSSND)=$P($G(^PSDRUG(PSSL,0)),"^")
 | 
|---|
 | 37 |  . I PSSAP["I"!(PSSAP["U") D
 | 
|---|
 | 38 |  . . S PSSDD(PSSL_";"_PSSND)=$P($G(^PSDRUG(PSSL,0)),"^")
 | 
|---|
 | 39 |  Q
 | 
|---|
 | 40 |  ;
 | 
|---|
 | 41 | ITEM(PSSIT,PSSDR) ;Return Orderable Item to CPRS
 | 
|---|
 | 42 |  N PSSNEW
 | 
|---|
 | 43 |  I '$G(PSSIT)!('$G(PSSDR)) Q -1
 | 
|---|
 | 44 |  I '$D(^PS(50.7,+$G(PSSIT),0))!('$D(^PSDRUG(+$G(PSSDR),0))) Q -1
 | 
|---|
 | 45 |  S PSSNEW=+$P($G(^PSDRUG(+$G(PSSDR),2)),"^")
 | 
|---|
 | 46 |  I PSSNEW,PSSNEW=$G(PSSIT) Q 0
 | 
|---|
 | 47 |  I PSSNEW,PSSNEW'=$G(PSSIT) Q 1_"^"_PSSNEW
 | 
|---|
 | 48 |  Q -1
 | 
|---|
 | 49 |  ;
 | 
|---|
 | 50 |  Q
 | 
|---|
 | 51 |  ;
 | 
|---|
 | 52 | EN1(PSSOA,PSSOAP) ;
 | 
|---|
 | 53 |  ;Return Orderable Item Forumary Alternatives to CPRS
 | 
|---|
 | 54 |  ;PSSOA = Pharmacy Orderable Item number
 | 
|---|
 | 55 |  ;PSSOAP = "I" For Inpatient, "O" For Outpatient
 | 
|---|
 | 56 |  Q:'$G(PSSOA)
 | 
|---|
 | 57 |  I $G(PSSOAP)'="O",$G(PSSOAP)'="I" Q
 | 
|---|
 | 58 |  N PSSOAL,PSSOALD,PSSOAN,PSSOAIT,PSSOADT,PSSOAZ
 | 
|---|
 | 59 |  S PSSOAL="" F  S PSSOAL=$O(^PSDRUG("ASP",PSSOA,PSSOAL)) Q:PSSOAL=""  D
 | 
|---|
 | 60 |  .S PSSOALD="" F  S PSSOALD=$O(^PSDRUG(PSSOAL,65,PSSOALD)) Q:PSSOALD=""  D
 | 
|---|
 | 61 |  ..S PSSOAN=$P($G(^PSDRUG(PSSOAL,65,PSSOALD,0)),"^") I PSSOAN S PSSOAIT=$P($G(^PSDRUG(PSSOAN,2)),"^") D:PSSOAIT
 | 
|---|
 | 62 |  ...Q:PSSOAIT=PSSOA
 | 
|---|
 | 63 |  ...Q:$D(PSSOA(PSSOAIT))
 | 
|---|
 | 64 |  ...Q:'$D(^PS(50.7,PSSOAIT,0))!($P($G(^PS(50.7,PSSOAIT,0)),"^",12))
 | 
|---|
 | 65 |  ...Q:$P($G(^PS(50.7,PSSOAIT,0)),"^",4)&(+$P($G(^(0)),"^",4)'>DT)
 | 
|---|
 | 66 |  ...S PSSOAZ="" F  S PSSOAZ=$O(^PSDRUG("ASP",PSSOAIT,PSSOAZ)) Q:PSSOAZ=""!($D(PSSOA(PSSOAIT)))  D
 | 
|---|
 | 67 |  ....Q:$P($G(^PSDRUG(PSSOAZ,"I")),"^")&(+$P($G(^("I")),"^")'>DT)
 | 
|---|
 | 68 |  ....Q:$P($G(^PSDRUG(PSSOAZ,0)),"^",9)
 | 
|---|
 | 69 |  ....I $G(PSSOAP)="O" S:$P($G(^PSDRUG(PSSOAZ,2)),"^",3)["O" PSSOA(PSSOAIT)="" Q
 | 
|---|
 | 70 |  ....I $P($G(^PSDRUG(PSSOAZ,2)),"^",3)["I"!($P($G(^(2)),"^",3)["U") S PSSOA(PSSOAIT)=""
 | 
|---|
 | 71 |  Q
 | 
|---|
 | 72 | SCH(SCH) ;Expand schedule for Outpatient order in CPRS
 | 
|---|
 | 73 |  N SQFLAG,SCLOOP,SCLP,SCLPS,SCLHOLD,SCIN,SODL,SST,SCHEX
 | 
|---|
 | 74 |  S SCHEX=$G(SCH) S SQFLAG=0
 | 
|---|
 | 75 |  I $G(SCH)="" G SCHQT
 | 
|---|
 | 76 |  ;I SCH[""""!($A(SCH)=45)!(SCH?.E1C.E)!($L(SCH," ")>3)!($L(SCH)>20)!($L(SCH)<1) K SCH Q
 | 
|---|
 | 77 |  F SCLOOP=0:0 S SCLOOP=$O(^PS(51.1,"B",SCH,SCLOOP)) Q:'SCLOOP!(SQFLAG)  I $P($G(^PS(51.1,SCLOOP,0)),"^",8)'="" S SCHEX=$P($G(^(0)),"^",8),SQFLAG=1
 | 
|---|
 | 78 |  I SQFLAG G SCHQT
 | 
|---|
 | 79 |  I $P($G(^PS(51,"A",SCH)),"^")'="" S SCHEX=$P(^(SCH),"^") G SCHQT
 | 
|---|
 | 80 |  S SCLOOP=0 F SCLP=1:1:$L(SCH) S SCLPS=$E(SCH,SCLP) I SCLPS=" " S SCLOOP=SCLOOP+1
 | 
|---|
 | 81 |  I SCLOOP=0 S SCHEX=SCH G SCHQT
 | 
|---|
 | 82 |  S SCLOOP=SCLOOP+1
 | 
|---|
 | 83 |  K SCLHOLD F SCIN=1:1:SCLOOP S (SODL,SCLHOLD(SCIN))=$P(SCH," ",SCIN) D
 | 
|---|
 | 84 |  .Q:$G(SODL)=""
 | 
|---|
 | 85 |  .S SQFLAG=0 F SST=0:0 S SST=$O(^PS(51.1,"B",SODL,SST)) Q:'SST!($G(SQFLAG))  I $P($G(^PS(51.1,SST,0)),"^",8)'="" S SCLHOLD(SCIN)=$P($G(^(0)),"^",8),SQFLAG=1
 | 
|---|
 | 86 |  .Q:$G(SQFLAG)
 | 
|---|
 | 87 |  .I $P($G(^PS(51,"A",SODL)),"^")'="" S SCLHOLD(SCIN)=$P(^(SODL),"^")
 | 
|---|
 | 88 |  S SCHEX="",SQFLAG=0 F SST=1:1:SCLOOP S SCHEX=SCHEX_$S($G(SQFLAG):" ",1:"")_$G(SCLHOLD(SST)),SQFLAG=1
 | 
|---|
 | 89 | SCHQT ;
 | 
|---|
 | 90 |  S SCH=SCHEX
 | 
|---|
 | 91 |  Q
 | 
|---|
 | 92 |  ;
 | 
|---|
 | 93 | IVDEA(PSSIVOI,PSSIVOIP) ;DEA Special Handling to CPRS for IV Fluids dialogue
 | 
|---|
 | 94 |  ;parameter 1 is Orderable Item
 | 
|---|
 | 95 |  ;parameter 2 is "A" for Additive, "S" for Solution
 | 
|---|
 | 96 |  ;Return variables:  1 -  DEA contains a 1 or a 2
 | 
|---|
 | 97 |  ;2 - DEA contains a 3, 4, or 5
 | 
|---|
 | 98 |  ;0 - first 2 conditions not met, but active additive/solutions exist
 | 
|---|
 | 99 |  ;null - no active additive/solution for the Orderable Item
 | 
|---|
 | 100 |  N PSSIVDO,PSSIVDD,PSSIVL,PSSIVLP,PSSIVDEA,PSSIVLPX
 | 
|---|
 | 101 |  S (PSSIVDO,PSSIVDD)=0
 | 
|---|
 | 102 |  I $G(PSSIVOIP)'="S" S PSSIVOIP="A"
 | 
|---|
 | 103 |  I '$G(PSSIVOI) G IVQ
 | 
|---|
 | 104 |  S PSSIVL="" F  S PSSIVL=$O(^PSDRUG("ASP",PSSIVOI,PSSIVL)) Q:PSSIVL=""!(PSSIVDO=1)  D
 | 
|---|
 | 105 |  .I $P($G(^PSDRUG(PSSIVL,"I")),"^"),$P($G(^("I")),"^")<DT Q
 | 
|---|
 | 106 |  .I $P($G(^PSDRUG(PSSIVL,2)),"^",3)'["I",$P($G(^(2)),"^",3)'["U" Q
 | 
|---|
 | 107 |  .I PSSIVOIP="A" D  Q
 | 
|---|
 | 108 |  ..S PSSIVLP="",PSSIVLPX=0 F  S PSSIVLP=$O(^PSDRUG("A526",PSSIVL,PSSIVLP)) Q:PSSIVLP=""!(PSSIVDO=1)!(PSSIVLPX)  D
 | 
|---|
 | 109 |  ...I $D(^PS(52.6,PSSIVLP,0)) I '$P($G(^("I")),"^")!($P($G(^("I")),"^")>DT) S (PSSIVDD,PSSIVLPX)=1 D IVX
 | 
|---|
 | 110 |  .S PSSIVLP="",PSSIVLPX=0 F  S PSSIVLP=$O(^PSDRUG("A527",PSSIVL,PSSIVLP)) Q:PSSIVLP=""!(PSSIVDO=1)!(PSSIVLPX)  D
 | 
|---|
 | 111 |  ..I $D(^PS(52.7,PSSIVLP,0)) I '$P($G(^("I")),"^")!($P($G(^("I")),"^")>DT) S (PSSIVDD,PSSIVLPX)=1 D IVX
 | 
|---|
 | 112 | IVQ ;
 | 
|---|
 | 113 |  I PSSIVDO=0,'PSSIVDD S PSSIVDO=""
 | 
|---|
 | 114 |  Q PSSIVDO
 | 
|---|
 | 115 |  ;
 | 
|---|
 | 116 | IVX ;
 | 
|---|
 | 117 |  S PSSIVDEA=$P($G(^PSDRUG(PSSIVL,0)),"^",3)
 | 
|---|
 | 118 |  I PSSIVDEA[1!(PSSIVDEA[2) S PSSIVDO=1 Q
 | 
|---|
 | 119 |  I PSSIVDEA[3!(PSSIVDEA[4)!(PSSIVDEA[5) S PSSIVDO=2
 | 
|---|
 | 120 |  Q
 | 
|---|