Ignore:
Timestamp:
Dec 4, 2009, 12:11:15 AM (14 years ago)
Author:
George Lilly
Message:

revised back to 6/30/08 version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WorldVistAEHR/trunk/r/INPATIENT_MEDICATIONS-PSJ-PSIV-PSG--PSGW/PSIVUTL1.m

    r613 r623  
    1 PSIVUTL1        ;BIR/MLM-IV UTILITIES ;21 MAY 96 / 10:37 AM
    2         ;;5.0; INPATIENT MEDICATIONS ;**58,81,111,134**;16 DEC 97;Build 124
    3         ;
    4         ; Reference to ^PS(50.7 is supported by DBIA 2180
    5         ; Reference to ^PS(51.2 is supported by DBIA 2178
    6         ; Reference to ^PS(52.6 is supported by DBIA 1231
    7         ; Reference to ^PS(52.7 is supported by DBIA 2173.
    8         ; Reference to ^PS(55 is supported by DBIA 2191
    9         ;
    10 DRGSC(Y,PSJSCT) ; Called to set DIC("S") when selecting orderable item.
    11         N OK,ND,NDU,NDI S OK=0 ;* I '$D(^PSDRUG("AP",+Y)) K PSJSCT Q 0
    12         S ND=$G(^PS(50.7,+Y,0))
    13         I $P(ND,U,3) S OK=$S('$P(ND,U,4):1,$P(ND,U,4)>DT:1,1:0)
    14         Q OK
    15         ;
    16 IVDRGSC(Y)      ; Set DIC("S") for IV additive/solution selection.
    17         ; Naked reference below refers to full reference in Y, which is either ^PS(52.6, or ^PS(52.7
    18         N Y S Y="S X(1)=$G(^(0)),X(2)=$G(^(""I"")) I $S('X(2):1,X(2)>DT:1,1:0),$D(^PSDRUG(+$P(X(1),U,2),0)) S X(2)=$G(^(""I"")) I $S('X(2):1,X(2)>DT:1,1:0)"
    19         Q Y
    20         ;
    21 ENU(Y)  ;Get IV additive strength.
    22         N X S X=$P(^PS(52.6,+Y,0),U,3),Y=$$CODES^PSIVUTL(X,52.6,2)
    23         Q Y
    24         ;
    25 CODES(X,Y)      ; Get name from code.
    26         S Y=$P($P(";"_$P(Y,U,3),";"_X_":",2),";")
    27         Q Y
    28         ;
    29 GTPCI(Y)        ; Set up "work" area for provider comments.
    30         N DIC,DINUM,DLAYGO,X S DIC="^PS(53.45,",DIC(0)="LNZ",DLAYGO=53.45,(DINUM,X)=+DUZ D ^DIC
    31         Q Y
    32         ;
    33 WDTE(Y) ; Format and print date.
    34         I 'Y S Y="******"
    35         E  X ^DD("DD") S Y=$P(Y,"@")_" "_$P($P(Y,"@",2),":",1,2)
    36         Q Y
    37 GTOT(DFN,ON)    ; Get order type for display.
    38         N DRGT,DRGI,Y
    39         S X=$P($G(^PS(55,DFN,"IV",ON,0)),U,4)
    40         S Y=$S(X="A":"F",X="H":"H",1:"I")
    41         I Y="F" F DRGT="AD","SOL" F DRGI=0:0 S DRGI=$O(^PS(55,DFN,"IV",+ON,DRGT,DRGI)) Q:'DRGI  I '$P($G(^PS(55,DFN,"IV",+ON,DRGT,DRGI)),U,5) S Y="I" Q
    42         Q Y
    43         ;
    44 PIV(ON) ; Display IV orders.
    45         N DRG,ON55,P,PSJORIFN,TYP,X,Y S TYP="?" I ON["V" D
    46         .S Y=$G(^PS(55,DFN,"IV",+ON,0)) F X=2,3,4,5,8,9,17,23 S P(X)=$P(Y,U,X)
    47         .S TYP=$$ONE^PSJBCMA(DFN,ON,P(9),P(2),P(3)) I TYP'="O" S TYP="C"
    48         .S ON55=ON,P("OT")=$S(P(4)="A":"F",P(4)="H":"H",1:"I") D GTDRG^PSIVORFB,GTOT^PSIVUTL(P(4))
    49         I ON'["V" S (P(2),P(3))="",P(17)=$P($G(^PS(53.1,+ON,0)),U,9),Y=$G(^(8)),P(4)=$P(Y,U),P(8)=$P(Y,U,5),P(9)=$P($G(^(2)),U) D GTDRG^PSIVORFA,GTOT^PSIVUTL(P(4)) I $E(P("OT"))="I"  D  Q
    50         .S P("PD")=$P($$DRUGNAME^PSJLMUTL(PSGP,ON),"^"),P("DO")=$S($P(DN,"^",2)=.2:$P($G(^PS(55,PSGP,5,+PSJO,.2)),"^",2),1:$G(^PS(55,PSGP,5,+PSJO,.3))),P("DO")=$P(P("DO"),"^")
    51         .S Y=$G(^PS(53.1,+ON,.2)),P("MR")=$P($G(^PS(53.1,+ON,0)),U,3)_U_$P($G(^PS(51.2,+$P($G(^PS(53.1,+ON,0)),U,3),0)),U,3)
    52         .W ?9,P("PD") D PIV1 W !?11,"Give: ",P("DO")," ",$P(P("MR"),U,2)," ",$S(P(9)]"":P(9),1:P(8))
    53         S DRG=0 F  S DRG=$O(DRG("AD",DRG)) Q:'DRG  D PIVAD
    54 SOL     ;
    55         NEW NAME
    56         S DRG=0 F  S DRG=$O(DRG("SOL",DRG)) Q:'DRG  D
    57         . D NAME(DRG("SOL",DRG),39,.NAME,0)
    58         . W ! W:DRG=1 ?9,"in "
    59         . F X=0:0 S X=$O(NAME(X)) Q:'X  W ?12 W NAME(X) I X=1,DRG=1,'$D(DRG("AD",1)) D PIV1
    60         Q
    61 PIVAD   ; Print IV Additives.
    62         NEW NAME
    63         D NAME(DRG("AD",DRG),39,.NAME,1)
    64         F X=0:0 S X=$O(NAME(X)) Q:'X  W:DRG'=1 ! W ?9,NAME(X) I X=1,DRG=1 D PIV1
    65         Q
    66         ;
    67 PIV1    ; Print Sched type, start/stop dates, and status.
    68         F X=2,3 S P(X)=$E($$ENDTC^PSGMI(P(X)),1,$S($D(PSJEXTP):8,1:5))
    69         I '$D(PSJEXTP) W ?50,TYP,?53,P(2),?60,P(3),?67,P(17) Q
    70         W ?50,TYP,?53,P(2),?63,P(3),?73,P(17)
    71         Q
    72 59      ; Validate the Infusion rate entered using IV Quick order code.
    73         N I F I=2,3,5,7,8,9,11,15,23 S P(I)=""
    74         S P(4)="A",P(8)=$P($G(^PS(57.1,PSJQO,1)),U,5)
    75         I $G(^PS(57.1,PSJQO,4,1,0)) S DRG("SOL",1)=^(0),DRG("SOL",0)=1
    76         I X["?" S F1=53.1,F2=59 D ENHLP^PSIVORC1 G 59
    77         I X]"" D ENI^PSIVSP S:$D(X) P(8)=X
    78         Q
    79 WRTDRG(X,L)           ; Format and print drug name, strength and bottle no.
    80         N Y S Y=" "_$P(X,U,3) S:$P(X,U,4) Y=Y_" ("_$P(X,U,4)_")"
    81         Q $E($P(X,U,2),1,(L-$L(Y)))_Y
    82 NAME(X,L,NAME,AD)              ; Format Additive display.
    83         ;INPUT : X=DRG("AD",DRG)  L=Display length   AD=for Addtive(1/0)
    84         ;OUTPUT: AD(X)  if X=2 that means there is a second line to display
    85         K NAME
    86         NEW Y S Y=$P(X,U,3) S:(AD&$P(X,U,4)) Y=Y_" ("_$P(X,U,4)_")"
    87         S:'AD Y=Y_" "_$S(P(4)="P"!($G(P(23))="P")!$G(P(5)):P(9),1:$P(P(8),"@"))
    88         I ($L($P(X,U,2))+$L(Y)+1)>L S NAME(1)=$P(X,U,2),NAME(2)="   "_Y Q
    89         S NAME(1)=$P(X,U,2)_" "_Y
    90         Q
    91         ;
    92 CNVTOM(RATE,TVOL)       ; Convert volume to minutes
    93         ; Input:
    94         ;   RATE - Infusion Rate
    95         ;   TVOL - Volume being infused, EX: m100 (100 Milliliters) or l5 (5 Liters)
    96         ; Output:
    97         ;   MINS - Minutes required to infuse volume
    98         N DAYS,ML,MLSHR
    99         ; Get rate in terms of mils per hour
    100         I 'RATE Q 0
    101         I RATE<1 S RATE=1
    102         S TVOL=$S($E(TVOL)="m":$E(TVOL,2,9),$E(TVOL)="l":$E(TVOL,2,9)*1000,1:0) Q:'TVOL 0
    103         ; Find IV duration in minutes
    104         S MINS=(TVOL/RATE)*60
    105         Q MINS
    106         ;
    107 GETMIN(LIM,DFN,PSJORD,DAYS)     ;
    108         N F,DDLX
    109         I LIM!(LIM=0) Q LIM
    110         S F=$S(PSJORD["P":"^PS(53.1,+PSJORD,",PSJORD["V":"^PS(55,DFN,""IV"",+PSJORD,",1:"")
    111         N RATE S RATE=$S(PSJORD["P":+$P($G(@(F_"8)")),"^",5),PSJORD["V":+$P($G(@(F_"0)")),"^",8),1:0)
    112         I (",l,m,")[(","_$E(LIM)_",") D
    113         .I RATE D
    114         ..I RATE<1 S RATE=1
    115         ..S MIN=$$CNVTOM(RATE,LIM) I MIN S LIM=MIN
    116         .I 'RATE N SOL,SOLVOL,DOSVOL,DUR,STOP,OIX,X S (SOLVOL,DOSVOL)="" D
    117         ..S SOL=0 F  S SOL=$O(@(F_"""SOL"",SOL)")) Q:'SOL  D
    118         ...S SOLVOL=$P(@(F_"""SOL"",SOL,0)"),"^",2) I SOLVOL S DOSVOL=DOSVOL+SOLVOL
    119         ..S DDLX=$S($E(LIM)["l":(($E(LIM,2,99)*1000)/DOSVOL),1:($E(LIM,2,99)/DOSVOL))_"L"
    120         I (",a,")[(","_$E(LIM)_",") S DDLX=$E(LIM,2,99)_"L"
    121         I $G(DDLX)>0 D
    122         .N STOP,LASTD S DAYS="",STOP=""
    123         .S OIX=$P($G(@(F_".2)")),"^") S:(DDLX<1) DDLX="1L" S LASTD=$$DOSES^PSIVCAL(DDLX,.P)
    124         .I LASTD,$G(P(2)) S DAYS=$$FMDIFF^XLFDT(LASTD,P(2),2) I DAYS>0 S DAYS=DAYS/86400
    125         .I DAYS>0 S LIM=DAYS*1440
    126         I (",h,d,")[(","_$E(LIM)_",") S LIM=$S($E(LIM)="d":(1440*$E(LIM,2,99)),1:(60*$E(LIM,2,99))) Q
    127         Q LIM
     1PSIVUTL1 ;BIR/MLM-IV UTILITIES ;21 MAY 96 / 10:37 AM
     2 ;;5.0; INPATIENT MEDICATIONS ;**58,81,111**;16 DEC 97
     3 ;
     4 ; Reference to ^PS(50.7 is supported by DBIA 2180
     5 ; Reference to ^PS(51.2 is supported by DBIA 2178
     6 ; Reference to ^PS(52.6 is supported by DBIA 1231
     7 ; Reference to ^PS(55 is supported by DBIA 2191
     8 ;
     9DRGSC(Y,PSJSCT) ; Called to set DIC("S") when selecting orderable item.
     10 N OK,ND,NDU,NDI S OK=0 ;* I '$D(^PSDRUG("AP",+Y)) K PSJSCT Q 0
     11 S ND=$G(^PS(50.7,+Y,0))
     12 I $P(ND,U,3) S OK=$S('$P(ND,U,4):1,$P(ND,U,4)>DT:1,1:0)
     13 Q OK
     14 ;
     15IVDRGSC(Y) ; Set DIC("S") for IV additive/solution selection.
     16 N Y S Y="S X(1)=$G(^(0)),X(2)=$G(^(""I"")) I $S('X(2):1,X(2)>DT:1,1:0),$D(^PSDRUG(+$P(X(1),U,2),0)) S X(2)=$G(^(""I"")) I $S('X(2):1,X(2)>DT:1,1:0)"
     17 Q Y
     18 ;
     19ENU(Y) ;Get IV additive strength.
     20 N X S X=$P(^PS(52.6,+Y,0),U,3),Y=$$CODES^PSIVUTL(X,52.6,2)
     21 Q Y
     22 ;
     23CODES(X,Y) ; Get name from code.
     24 S Y=$P($P(";"_$P(Y,U,3),";"_X_":",2),";")
     25 Q Y
     26 ;
     27GTPCI(Y) ; Set up "work" area for provider comments.
     28 N DIC,DINUM,DLAYGO,X S DIC="^PS(53.45,",DIC(0)="LNZ",DLAYGO=53.45,(DINUM,X)=+DUZ D ^DIC
     29 Q Y
     30 ;
     31WDTE(Y) ; Format and print date.
     32 I 'Y S Y="******"
     33 E  X ^DD("DD") S Y=$P(Y,"@")_" "_$P($P(Y,"@",2),":",1,2)
     34 Q Y
     35GTOT(DFN,ON) ; Get order type for display.
     36 N DRGT,DRGI,Y
     37 S X=$P($G(^PS(55,DFN,"IV",ON,0)),U,4)
     38 S Y=$S(X="A":"F",X="H":"H",1:"I")
     39 I Y="F" F DRGT="AD","SOL" F DRGI=0:0 S DRGI=$O(^PS(55,DFN,"IV",+ON,DRGT,DRGI)) Q:'DRGI  I '$P($G(^PS(55,DFN,"IV",+ON,DRGT,DRGI)),U,5) S Y="I" Q
     40 Q Y
     41 ;
     42PIV(ON) ; Display IV orders.
     43 N DRG,ON55,P,PSJORIFN,TYP,X,Y S TYP="?" I ON["V" D
     44 .S Y=$G(^PS(55,DFN,"IV",+ON,0)) F X=2,3,4,5,8,9,17,23 S P(X)=$P(Y,U,X)
     45 .S TYP=$$ONE^PSJBCMA(DFN,ON,P(9),P(2),P(3)) I TYP'="O" S TYP="C"
     46 .S ON55=ON,P("OT")=$S(P(4)="A":"F",P(4)="H":"H",1:"I") D GTDRG^PSIVORFB,GTOT^PSIVUTL(P(4))
     47 I ON'["V" S (P(2),P(3))="",P(17)=$P($G(^PS(53.1,+ON,0)),U,9),Y=$G(^(8)),P(4)=$P(Y,U),P(8)=$P(Y,U,5),P(9)=$P($G(^(2)),U) D GTDRG^PSIVORFA,GTOT^PSIVUTL(P(4)) I $E(P("OT"))="I"  D  Q
     48 .S P("PD")=$P($$DRUGNAME^PSJLMUTL(PSGP,ON),"^"),P("DO")=$S($P(DN,"^",2)=.2:$P($G(^PS(55,PSGP,5,+PSJO,.2)),"^",2),1:$G(^PS(55,PSGP,5,+PSJO,.3))),P("DO")=$P(P("DO"),"^")
     49 .S Y=$G(^PS(53.1,+ON,.2)),P("MR")=$P($G(^PS(53.1,+ON,0)),U,3)_U_$P($G(^PS(51.2,+$P($G(^PS(53.1,+ON,0)),U,3),0)),U,3)
     50 .W ?9,P("PD") D PIV1 W !?11,"Give: ",P("DO")," ",$P(P("MR"),U,2)," ",$S(P(9)]"":P(9),1:P(8))
     51 S DRG=0 F  S DRG=$O(DRG("AD",DRG)) Q:'DRG  D PIVAD
     52SOL ;
     53 NEW NAME
     54 S DRG=0 F  S DRG=$O(DRG("SOL",DRG)) Q:'DRG  D
     55 . D NAME(DRG("SOL",DRG),39,.NAME,0)
     56 . W ! W:DRG=1 ?9,"in "
     57 . F X=0:0 S X=$O(NAME(X)) Q:'X  W ?12 W NAME(X) I X=1,DRG=1,'$D(DRG("AD",1)) D PIV1
     58 Q
     59PIVAD ; Print IV Additives.
     60 NEW NAME
     61 D NAME(DRG("AD",DRG),39,.NAME,1)
     62 F X=0:0 S X=$O(NAME(X)) Q:'X  W:DRG'=1 ! W ?9,NAME(X) I X=1,DRG=1 D PIV1
     63 Q
     64 ;
     65PIV1 ; Print Sched type, start/stop dates, and status.
     66 F X=2,3 S P(X)=$E($$ENDTC^PSGMI(P(X)),1,$S($D(PSJEXTP):8,1:5))
     67 I '$D(PSJEXTP) W ?50,TYP,?53,P(2),?60,P(3),?67,P(17) Q
     68 W ?50,TYP,?53,P(2),?63,P(3),?73,P(17)
     69 Q
     7059 ; Validate the Infusion rate entered using IV Quick order code.
     71 N I F I=2,3,5,7,8,9,11,15,23 S P(I)=""
     72 S P(4)="A",P(8)=$P($G(^PS(57.1,PSJQO,1)),U,5)
     73 I $G(^PS(57.1,PSJQO,4,1,0)) S DRG("SOL",1)=^(0),DRG("SOL",0)=1
     74 I X["?" S F1=53.1,F2=59 D ENHLP^PSIVORC1 G 59
     75 I X]"" D ENI^PSIVSP S:$D(X) P(8)=X
     76 Q
     77WRTDRG(X,L)       ; Format and print drug name, strength and bottle no.
     78 N Y S Y=" "_$P(X,U,3) S:$P(X,U,4) Y=Y_" ("_$P(X,U,4)_")"
     79 Q $E($P(X,U,2),1,(L-$L(Y)))_Y
     80 ;Q $E($$ENPDN^PSGMI($P(X,U,6)),1,(L-$L(Y)))_Y
     81NAME(X,L,NAME,AD)        ; Format Additive display.
     82 ;INPUT : X=DRG("AD",DRG)  L=Display length   AD=for Addtive(1/0)
     83 ;OUTPUT: AD(X)  if X=2 that means there is a second line to display
     84 K NAME
     85 NEW Y S Y=$P(X,U,3) S:(AD&$P(X,U,4)) Y=Y_" ("_$P(X,U,4)_")"
     86 S:'AD Y=Y_" "_$S(P(4)="P"!($G(P(23))="P")!$G(P(5)):P(9),1:$P(P(8),"@"))
     87 I ($L($P(X,U,2))+$L(Y)+1)>L S NAME(1)=$P(X,U,2),NAME(2)="   "_Y Q
     88 S NAME(1)=$P(X,U,2)_" "_Y
     89 Q
     90 ;
     91CNVTOM(RATE,TVOL) ; Convert volume to minutes
     92 N DAYS,ML,MLSHR
     93 ; Get rate in terms of mils per hour
     94 I 'RATE Q 0
     95 S TVOL=$S($E(TVOL)="m":$E(TVOL,2,9),$E(TVOL)="l":$E(TVOL,2,9)*1000,1:0) Q:'TVOL 0
     96 ; Find IV duration in minutes
     97 S MINS=(TVOL/RATE)*60 S MINS=MINS+1
     98 Q MINS
Note: See TracChangeset for help on using the changeset viewer.