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/ORDER_ENTRY_RESULTS_REPORTING-OR-OCX--ORRC--ORRJ/ORBCMA1.m

    r613 r623  
    1 ORBCMA1 ; SLC/JLI - Pharmacy Calls for Windows Dialog [ 3/7/2006 ]
    2         ;;3.0;ORDER ENTRY/RESULTS REPORTING;**133,243**;Dec 17, 1997;Build 242
    3         ;;OR BCMA ORDER COM V1.0 ;**133**; Jan 19, 2002
    4         ;
    5 ODSLCT(LST,PSTYPE,DFN,LOC)      ; return default lists for dialog
    6         ; PSTYPE: pharmacy type (U=unit dose, F=IV fluids, O=outpatient)
    7         N ILST S ILST=0
    8         S ILST=ILST+1,LST(ILST)="~Priority" D PRIOR
    9         S ILST=ILST+1,LST(ILST)="~DispMsg"
    10         S ILST=ILST+1,LST(ILST)="d"_$$DISPMSG
    11         ;
    12         ; I PSTYPE="F" D  Q                           ; IV Fluids
    13         ; . S ILST=ILST+1,LST(ILST)="~ShortList" D SHORT
    14         ;
    15         I PSTYPE="O" D                                ; Outpatient
    16         . S ILST=ILST+1,LST(ILST)="~Refills"
    17         . S ILST=ILST+1,LST(ILST)="d0^0"
    18         . S ILST=ILST+1,LST(ILST)="~Pickup"
    19         . S ILST=ILST+1,LST(ILST)="d"_$$DEFPICK($G(LOC))
    20         . ; S ILST=ILST+1,LST(ILST)="~Supply"
    21         . ; S ILST=ILST+1,LST(ILST)="d^"_$$DEFSPLY(DFN)
    22         Q
    23 PRIOR   ; from DLGSLCT, get list of allowed priorities
    24         N X,XREF
    25         S X=0
    26         S X=$O(^ORD(101.42,"B","DONE",X))
    27         S ILST=ILST+1,LST(ILST)="d"_X_U_$P(^ORD(101.42,X,0),U,2)
    28         Q
    29 DEFPICK(LOC)          ; return default routing
    30         N X,DLG,PRMT
    31         S DLG=$O(^ORD(101.41,"AB","PSO OERR",0)),X=""
    32         S PRMT=$O(^ORD(101.41,"AB","OR GTX ROUTING",0))
    33         I $D(^TMP("ORECALL",$J,+DLG,+PRMT,1)) S X=^(1)
    34         I X'="" S EDITONLY=1 Q X  ; EDITONLY used by default action
    35         ;
    36         S X=$$GET^XPAR("ALL^"_"LOC.`"_LOC,"ORWDPS ROUTING DEFAULT",1,"I")
    37         I X="C" S X="C^in Clinic" G XPICK
    38         I X="M" S X="M^by Mail"   G XPICK
    39         I X="W" S X="W^at Window" G XPICK
    40         I X="N" S X=""            G XPICK
    41         I X=""  S X=$S($D(^PSX(550,"C")):"M^by Mail",1:"W^at Window")
    42 XPICK   Q X
    43         ;
    44 DEFSPLY(DFN)       ; return default days supply for this patient
    45         N ORWX
    46         S ORWX("PATIENT")=DFN
    47         D DSUP^PSOSIGDS(.ORWX)
    48         Q $G(ORWX("DAYS SUPPLY"))
    49         ;
    50 DFLTSPLY(VAL,UPD,SCH,PAT,DRG)          ; return days supply given quantity
    51         ; VAL: default days supply
    52         N ORWX,I
    53         S ORWX("PATIENT")=PAT
    54         I DRG S ORWX("DRUG")=DRG
    55         F I=1:1:$L(UPD,U)-1 D
    56         . S ORWX("DOSE ORDERED",I)=$P(UPD,U,I)
    57         . S ORWX("SCHEDULE",I)=$P(SCH,U,I)
    58         D DSUP^PSOSIGDS(.ORWX)
    59         S VAL=$G(ORWX("DAYS SUPPLY"))
    60         Q
    61 DISPMSG()             ; return 1 to suppress dispense message
    62         Q +$$GET^XPAR("ALL","ORWDPS SUPPRESS DISPENSE MSG",1,"I")
    63         ;
    64 SCHALL(LST)     ; return all schedules
    65         N ILST,SCH,IEN,EXP,TYP,X0
    66         K ^TMP($J,"ORBCMA1 SCHALL")
    67         D AP^PSS51P1("PSJ",,,,"ORBCMA1 SCHALL")
    68         S ILST=0,SCH=""
    69         F  S SCH=$O(^TMP($J,"ORBCMA1 SCHALL","APPSJ",SCH)) Q:SCH=""  D
    70         . I (SCH="STAT")!(SCH="NOW") D
    71         .. S IEN=$O(^TMP($J,"ORBCMA1 SCHALL","APPSJ",SCH,""))
    72         .. S EXP=$G(^TMP($J,"ORBCMA1 SCHALL",SCH,8))
    73         .. S TYP=$P($G(^TMP($J,"ORBCMA1 SCHALL",SCH,5)),U)
    74         .. S ILST=ILST+1,LST(ILST)=SCH_U_EXP_U_TYP
    75         K ^TMP($J,"ORBCMA1 SCHALL")
    76         Q
    77 FORMALT(ORLST,IEN,PSTYPE)       ; return a list of formulary alternatives
    78         N PSID,I
    79         S IEN=+$P(^ORD(101.43,IEN,0),U,2)
    80         D EN1^PSSUTIL1(.IEN,PSTYPE)
    81         S PSID=0,I=0
    82         F  S PSID=$O(IEN(PSID)) Q:'PSID  D
    83         . S OI=+$O(^ORD(101.43,"ID",PSID_";99PSP",0))
    84         . I OI S I=I+1,ORLST(I)=OI,$P(ORLST(I),U,2)=$P(^ORD(101.43,OI,0),U)
    85         Q
    86 DOSEALT(LST,DDRUG,CUROI,PSTYPE) ; return a list of formulary alternatives for dose
    87         N I,OI,ORWLST,ILST S ILST=0
    88         D ENRFA^PSJORUTL(DDRUG,PSTYPE,.ORWLST)
    89         S I=0 F  S I=$O(ORWLST(I)) Q:'I  D
    90         . S OI=+$O(^ORD(101.43,"ID",+$P(ORWLST(I),U,4)_";99PSP",0))
    91         . I OI,OI'=CUROI S ILST=ILST+1,LST(ILST)=OI_U_$P(^ORD(101.43,OI,0),U)
    92         Q
    93 FAILDEA(FAIL,OI,ORNP,PSTYPE)       ; return 1 if DEA check fails for this provider
    94         N DEAFLG,PSOI
    95         S FAIL=0,PSOI=+$P($G(^ORD(101.43,+$G(OI),0)),U,2) Q:PSOI'>0
    96         I '$L($T(OIDEA^PSSUTLA1)) Q
    97         S DEAFLG=$$OIDEA^PSSUTLA1(PSOI,PSTYPE) Q:DEAFLG'>0
    98         I '$L($P($G(^VA(200,+$G(ORNP),"PS")),U,2)),'$L($P($G(^("PS")),U,3)) S FAIL=1
    99         Q
    100 CHK94(VAL)           ; return 1 if patch 94 has been installed
    101         S VAL=0
    102         I $O(^ORD(101.41,"B","PS MEDS",0)) S VAL=1
    103         Q
     1ORBCMA1 ; SLC/JLI - Pharmacy Calls for Windows Dialog [ 2/11/02 4:30PM ]
     2 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**133**;Dec 17, 1997
     3 ;;OR BCMA ORDER COM V1.0 ;**133**; Jan 19, 2002
     4 ;
     5ODSLCT(LST,PSTYPE,DFN,LOC) ; return default lists for dialog
     6 ; PSTYPE: pharmacy type (U=unit dose, F=IV fluids, O=outpatient)
     7 N ILST S ILST=0
     8 S ILST=ILST+1,LST(ILST)="~Priority" D PRIOR
     9 S ILST=ILST+1,LST(ILST)="~DispMsg"
     10 S ILST=ILST+1,LST(ILST)="d"_$$DISPMSG
     11 ;
     12 ; I PSTYPE="F" D  Q                           ; IV Fluids
     13 ; . S ILST=ILST+1,LST(ILST)="~ShortList" D SHORT
     14 ;
     15 I PSTYPE="O" D                                ; Outpatient
     16 . S ILST=ILST+1,LST(ILST)="~Refills"
     17 . S ILST=ILST+1,LST(ILST)="d0^0"
     18 . S ILST=ILST+1,LST(ILST)="~Pickup"
     19 . S ILST=ILST+1,LST(ILST)="d"_$$DEFPICK($G(LOC))
     20 . ; S ILST=ILST+1,LST(ILST)="~Supply"
     21 . ; S ILST=ILST+1,LST(ILST)="d^"_$$DEFSPLY(DFN)
     22 Q
     23PRIOR ; from DLGSLCT, get list of allowed priorities
     24 N X,XREF
     25 S X=0
     26 S X=$O(^ORD(101.42,"B","DONE",X))
     27 S ILST=ILST+1,LST(ILST)="d"_X_U_$P(^ORD(101.42,X,0),U,2)
     28 Q
     29DEFPICK(LOC)       ; return default routing
     30 N X,DLG,PRMT
     31 S DLG=$O(^ORD(101.41,"AB","PSO OERR",0)),X=""
     32 S PRMT=$O(^ORD(101.41,"AB","OR GTX ROUTING",0))
     33 I $D(^TMP("ORECALL",$J,+DLG,+PRMT,1)) S X=^(1)
     34 I X'="" S EDITONLY=1 Q X  ; EDITONLY used by default action
     35 ;
     36 S X=$$GET^XPAR("ALL^"_"LOC.`"_LOC,"ORWDPS ROUTING DEFAULT",1,"I")
     37 I X="C" S X="C^in Clinic" G XPICK
     38 I X="M" S X="M^by Mail"   G XPICK
     39 I X="W" S X="W^at Window" G XPICK
     40 I X="N" S X=""            G XPICK
     41 I X=""  S X=$S($D(^PSX(550,"C")):"M^by Mail",1:"W^at Window")
     42XPICK Q X
     43 ;
     44DEFSPLY(DFN)    ; return default days supply for this patient
     45 N ORWX
     46 S ORWX("PATIENT")=DFN
     47 D DSUP^PSOSIGDS(.ORWX)
     48 Q $G(ORWX("DAYS SUPPLY"))
     49 ;
     50DFLTSPLY(VAL,UPD,SCH,PAT,DRG)        ; return days supply given quantity
     51 ; VAL: default days supply
     52 N ORWX,I
     53 S ORWX("PATIENT")=PAT
     54 I DRG S ORWX("DRUG")=DRG
     55 F I=1:1:$L(UPD,U)-1 D
     56 . S ORWX("DOSE ORDERED",I)=$P(UPD,U,I)
     57 . S ORWX("SCHEDULE",I)=$P(SCH,U,I)
     58 D DSUP^PSOSIGDS(.ORWX)
     59 S VAL=$G(ORWX("DAYS SUPPLY"))
     60 Q
     61DISPMSG()       ; return 1 to suppress dispense message
     62 Q +$$GET^XPAR("ALL","ORWDPS SUPPRESS DISPENSE MSG",1,"I")
     63 ;
     64SCHALL(LST) ; return all schedules
     65 N ILST,SCH,IEN,EXP,TYP,X0
     66 S ILST=0,SCH=""
     67 F  S SCH=$O(^PS(51.1,"APPSJ",SCH)) Q:SCH=""  D
     68 . I (SCH="STAT")!(SCH="NOW") D
     69 .. S IEN=$O(^PS(51.1,"APPSJ",SCH,0))
     70 .. S X0=$G(^PS(51.1,IEN,0)),EXP=$P(X0,U,8),TYP=$P(X0,U,5)
     71 .. S ILST=ILST+1,LST(ILST)=SCH_U_EXP_U_TYP
     72 Q
     73FORMALT(ORLST,IEN,PSTYPE) ; return a list of formulary alternatives
     74 N PSID,I
     75 S IEN=+$P(^ORD(101.43,IEN,0),U,2)
     76 D EN1^PSSUTIL1(.IEN,PSTYPE)
     77 S PSID=0,I=0
     78 F  S PSID=$O(IEN(PSID)) Q:'PSID  D
     79 . S OI=+$O(^ORD(101.43,"ID",PSID_";99PSP",0))
     80 . I OI S I=I+1,ORLST(I)=OI,$P(ORLST(I),U,2)=$P(^ORD(101.43,OI,0),U)
     81 Q
     82DOSEALT(LST,DDRUG,CUROI,PSTYPE) ; return a list of formulary alternatives for dose
     83 N I,OI,ORWLST,ILST S ILST=0
     84 D ENRFA^PSJORUTL(DDRUG,PSTYPE,.ORWLST)
     85 S I=0 F  S I=$O(ORWLST(I)) Q:'I  D
     86 . S OI=+$O(^ORD(101.43,"ID",+$P(ORWLST(I),U,4)_";99PSP",0))
     87 . I OI,OI'=CUROI S ILST=ILST+1,LST(ILST)=OI_U_$P(^ORD(101.43,OI,0),U)
     88 Q
     89FAILDEA(FAIL,OI,ORNP,PSTYPE)    ; return 1 if DEA check fails for this provider
     90 N DEAFLG,PSOI
     91 S FAIL=0,PSOI=+$P($G(^ORD(101.43,+$G(OI),0)),U,2) Q:PSOI'>0
     92 I '$L($T(OIDEA^PSSUTLA1)) Q
     93 S DEAFLG=$$OIDEA^PSSUTLA1(PSOI,PSTYPE) Q:DEAFLG'>0
     94 I '$L($P($G(^VA(200,+$G(ORNP),"PS")),U,2)),'$L($P($G(^("PS")),U,3)) S FAIL=1
     95 Q
     96CHK94(VAL)      ; return 1 if patch 94 has been installed
     97 S VAL=0
     98 I $O(^ORD(101.41,"B","PS MEDS",0)) S VAL=1
     99 Q
Note: See TracChangeset for help on using the changeset viewer.