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/PROSTHETICS-RMPR-RMPO-RMPS/RMPREOU.m

    r613 r623  
    1 RMPREOU ;HINES/HNC -Suspense Processing Utility  ;2-2-2000
    2         ;;3.0;PROSTHETICS;**45,55,59,135**;Feb 09, 1996;Build 12
    3         ; Add new function for working days M-F.
    4         Q
    5         ;
    6 ITEM(DA,RL)     ;psas hcpcs space item name
    7         ;parm 1=ien 660
    8         ;parm 2=string length
    9         N DIC,DIQ,DR,ITEM
    10         S DIC=660,DIQ="RE",DR="4:4.5",DIQ(0)="EN" D EN^DIQ1
    11         S ITEM=$G(RE(660,DA,4.5,"E"))_" "_$G(RE(660,DA,4,"E"))
    12         I $G(RL) S ITEM=$E(ITEM,0,RL)
    13         K RE Q ITEM
    14         ;
    15         Q
    16 PWRKDAY(DA)         ;working days between init action and current dateM-F.
    17         ;holidays are counted as working days
    18         ;parm 1=ien 668, DA
    19         ;
    20         N RMTO,RB,RE
    21         S RB=$P($G(^RMPR(668,DA,0)),U,9)
    22         Q:RB="" 0
    23         S RE=DT
    24         Q:RE="" 0
    25         D WDAY
    26         Q RMTO
    27         Q
    28         ;
    29 TYPE(DA,RL)     ;type of consult, suspense
    30         ;parm 1=ien 668
    31         ;parm 2=string length optional
    32         N DIC,DIQ,DR,TYPE
    33         S DIC=668,DIQ="RE",DR=9,DIQ(0)="EN" D EN^DIQ1
    34         S TYPE=$G(RE(668,DA,9,"E"))
    35         I $G(RL) S TYPE=$E(TYPE,0,RL)
    36         K RE Q TYPE
    37         ;
    38         ;
    39         Q
    40 PDAY(DA)        ;days between create and init action
    41         ;parm 1=ien 668
    42         N PDAY,X1,X2
    43         S PDAY=""
    44         S X2=$P($G(^RMPR(668,DA,0)),U,1)
    45         Q:X2="" PDAY
    46         S X1=$P($G(^RMPR(668,DA,0)),U,9)
    47         I X1="" S:$D(RMPRCD) X1=RMPRCD
    48         ;Q:X1="" PDAY
    49         D ^%DTC
    50         Q X
    51         ;
    52         Q
    53 DES(DA,RL)      ;description for manual
    54         ;parm 1=ien 668
    55         ;parm 2=string length optional
    56         N DES
    57         S DES=$G(^RMPR(668,DA,2,1,0))
    58         I DES="" Q DES
    59         I $G(RL) S DES=$E(DES,0,RL)
    60         Q DES
    61         ;
    62 STATUS(DA,RL)   ;status of suspense, open, pending, closed
    63         N DIC,DIQ,DR,STATUS
    64         S DIC=668,DIQ="RE",DR=14,DIQ(0)="EN" D EN^DIQ1
    65         S STATUS=$G(RE(668,DA,14,"E"))
    66         I STATUS="" S STATUS="UNKNOWN"
    67         I $G(RL) S STATUS=$E(STATUS,0,RL)
    68         K RE Q STATUS
    69         ;
    70 WHO(DA,RL)      ;requestor or provider
    71         N DIC,DIQ,DR,WHO
    72         S DIC=200,DIQ="RE",DR=.01,DIQ(0)="EN" D EN^DIQ1
    73         S WHO=$G(RE(200,DA,.01,"E"))
    74         I $G(RL) S WHO=$E(WHO,0,RL)
    75         K RE Q WHO
    76         ;
    77         Q
    78 NUM     ;pick number from list
    79         K DIR S DIR(0)="LO^"_VALMBG_":"_VALMLST D ^DIR
    80         Q
    81         ;
    82 NUM2    ;pick a single number from a list
    83         K DIR S DIR(0)="N^"_VALMBG_":"_VALMLST D ^DIR
    84         Q
    85         ;
    86 WRKDAY(DA)             ;working days between create and init action M-F.
    87         ;holidays are counted as working days
    88         ;parm 1=ien 668, DA
    89         ;
    90         N RMTO,RB,RE
    91         S RB=$P($G(^RMPR(668,DA,0)),U,1)
    92         Q:RB="" 0
    93         S RE=$P($G(^RMPR(668,DA,0)),U,9)
    94         Q:RE="" 0
    95         D WDAY
    96         Q RMTO
    97 CWRKDAY(DA)     ;working days based on today for open records.
    98         ;holidays are counted as working days
    99         ;parm 1=ien 668, DA
    100         N RMTO,RB,RE
    101         S RB=$P($G(^RMPR(668,DA,0)),U,1)
    102         Q:RB="" 0
    103         S RE=DT
    104         D WDAY
    105         Q RMTO
    106 CANWKDY(DA)     ;*135 working days between create and cancel date for cancel w/o initial action records.
    107         ;holidays are counted as working days
    108         ;parm 1=ien 668, DA
    109         N RMTO,RB,RE
    110         S RB=$P($G(^RMPR(668,DA,0)),U)
    111         Q:RB="" 0
    112         S RE=$P(^RMPR(668,DA,5),U)
    113         Q:RE="" 0
    114         D WDAY
    115         Q RMTO
    116 WDAY    ;       RB - begining date
    117         ;       RE - ending date
    118         ;Return variable:
    119         ;       RMTO - working days
    120         ;Changed 03/26/03 to make a call to XUWORKDY to not count Holidays
    121         ;In order to not couont Holidays the site must keep the Holiday file
    122         ;current.
    123         S RMTO=$$EN^XUWORKDY(RB,RE)
    124         Q
    125         ;Set days as Monday the FIRST day and so on:
    126         ;       Monday    = 1
    127         ;       Sunday    = 7
    128         ;If invalid dates, return ZERO.
    129         N X,Y,RMB,RME,RMTOT,RDSDAY,RDEDAY,RBCA,RNOB,RMNOD,RECA,RNO
    130 1       S X1=RE,X2=RB D ^%DTC S RMNOD=X
    131         S (RMTO,RMTOT,RECA)=0
    132         S X=RB D DW^%DTC S RMB=X
    133         S X=RE D DW^%DTC S RME=X
    134         I (RB=RE)!(RB>RE)!(RMNOD'>0) Q
    135         ;Get the FIRST set of Monday to Sunday days.
    136         S RDSDAY=$S(RMB["MON":1,RMB["TUE":2,RMB["WED":3,RMB["THU":4,RMB["FRI":5,RMB["SAT":6,RMB["SUN":7,1:0)
    137         S RNOB=$S(RDSDAY=1:4,RDSDAY=2:3,RDSDAY=3:2,RDSDAY=4:1,1:0)
    138         I RNOB=4,RMNOD<7 S RNOB=$S(RMNOD=1:1,RMNOD=2:2,RMNOD=3:3,1:4)
    139         I RNOB=3,RMNOD<6 S RNOB=$S(RMNOD=1:1,RMNOD=2:2,1:3)
    140         I RNOB=2,RMNOD<5 S RNOB=$S(RMNOD=1:1,1:2)
    141         S RBCA=7-RDSDAY
    142         S RMNOD=RMNOD-RBCA
    143         ;Get the SECOND set of Monday to Sunday days.
    144         S RDEDAY=$S(RME["MON":1,RME["TUE":2,RME["WED":3,RME["THU":4,RME["FRI":5,RME["SAT":6,RME["SUN":7,1:0)
    145         I RMNOD>0 D
    146         .S RECA=$S(RDEDAY=7:5,RDEDAY=6:5,1:RDEDAY)
    147         .S RMNOD=RMNOD-RDEDAY
    148         ;
    149         ;calculate totals
    150         S RMTOT=RMTOT+RNOB+RECA
    151         I RMNOD>0,RMNOD<6 S RMTOT=RMTOT+RMNOD
    152         I RMNOD=6 S RMTOT=RMTOT+RMNOD-1
    153         I RMNOD=7 S RMTOT=RMTOT+RMNOD-2
    154         ;if the FIRST and SECOND set of Monday to Sunday total is
    155         ;still greater than 7 days, exclude Saturday and Sunday - don't count.
    156         I RMNOD>7 S RMTOT=RMTOT+(RMNOD-((RMNOD/7)*2))
    157         S RMTO=$J(RMTOT,0,0)
    158 END     ;
     1RMPREOU ;HINES/HNC -Suspense Processing Utility  ;2-2-2000
     2 ;;3.0;PROSTHETICS;**45,55,59**;Feb 09, 1996
     3 ; Add new function for working days M-F.
     4 Q
     5 ;
     6ITEM(DA,RL) ;psas hcpcs space item name
     7 ;parm 1=ien 660
     8 ;parm 2=string length
     9 N DIC,DIQ,DR,ITEM
     10 S DIC=660,DIQ="RE",DR="4:4.5",DIQ(0)="EN" D EN^DIQ1
     11 S ITEM=$G(RE(660,DA,4.5,"E"))_" "_$G(RE(660,DA,4,"E"))
     12 I $G(RL) S ITEM=$E(ITEM,0,RL)
     13 K RE Q ITEM
     14 ;
     15 Q
     16PWRKDAY(DA)     ;working days between init action and current dateM-F.
     17 ;holidays are counted as working days
     18 ;parm 1=ien 668, DA
     19 ;
     20 N RMTO,RB,RE
     21 S RB=$P($G(^RMPR(668,DA,0)),U,9)
     22 Q:RB="" 0
     23 S RE=DT
     24 Q:RE="" 0
     25 D WDAY
     26 Q RMTO
     27 Q
     28 ;
     29TYPE(DA,RL) ;type of consult, suspense
     30 ;parm 1=ien 668
     31 ;parm 2=string length optional
     32 N DIC,DIQ,DR,TYPE
     33 S DIC=668,DIQ="RE",DR=9,DIQ(0)="EN" D EN^DIQ1
     34 S TYPE=$G(RE(668,DA,9,"E"))
     35 I $G(RL) S TYPE=$E(TYPE,0,RL)
     36 K RE Q TYPE
     37 ;
     38 ;
     39 Q
     40PDAY(DA) ;days between create and init action
     41 ;parm 1=ien 668
     42 N PDAY,X1,X2
     43 S PDAY=""
     44 S X2=$P($G(^RMPR(668,DA,0)),U,1)
     45 Q:X2="" PDAY
     46 S X1=$P($G(^RMPR(668,DA,0)),U,9)
     47 I X1="" S:$D(RMPRCD) X1=RMPRCD
     48 ;Q:X1="" PDAY
     49 D ^%DTC
     50 Q X
     51 ;
     52 Q
     53DES(DA,RL) ;description for manual
     54 ;parm 1=ien 668
     55 ;parm 2=string length optional
     56 N DES
     57 S DES=$G(^RMPR(668,DA,2,1,0))
     58 I DES="" Q DES
     59 I $G(RL) S DES=$E(DES,0,RL)
     60 Q DES
     61 ;
     62STATUS(DA,RL) ;status of suspense, open, pending, closed
     63 N DIC,DIQ,DR,STATUS
     64 S DIC=668,DIQ="RE",DR=14,DIQ(0)="EN" D EN^DIQ1
     65 S STATUS=$G(RE(668,DA,14,"E"))
     66 I STATUS="" S STATUS="UNKNOWN"
     67 I $G(RL) S STATUS=$E(STATUS,0,RL)
     68 K RE Q STATUS
     69 ;
     70WHO(DA,RL) ;requestor or provider
     71 N DIC,DIQ,DR,WHO
     72 S DIC=200,DIQ="RE",DR=.01,DIQ(0)="EN" D EN^DIQ1
     73 S WHO=$G(RE(200,DA,.01,"E"))
     74 I $G(RL) S WHO=$E(WHO,0,RL)
     75 K RE Q WHO
     76 ;
     77 Q
     78NUM ;pick number from list
     79 K DIR S DIR(0)="LO^"_VALMBG_":"_VALMLST D ^DIR
     80 Q
     81 ;
     82NUM2 ;pick a single number from a list
     83 K DIR S DIR(0)="N^"_VALMBG_":"_VALMLST D ^DIR
     84 Q
     85 ;
     86WRKDAY(DA)        ;working days between create and init action M-F.
     87 ;holidays are counted as working days
     88 ;parm 1=ien 668, DA
     89 ;
     90 N RMTO,RB,RE
     91 S RB=$P($G(^RMPR(668,DA,0)),U,1)
     92 Q:RB="" 0
     93 S RE=$P($G(^RMPR(668,DA,0)),U,9)
     94 Q:RE="" 0
     95 D WDAY
     96 Q RMTO
     97CWRKDAY(DA) ;working days based on today for open records.
     98 ;holidays are counted as working days
     99 ;parm 1=ien 668, DA
     100 N RMTO,RB,RE
     101 S RB=$P($G(^RMPR(668,DA,0)),U,1)
     102 Q:RB="" 0
     103 S RE=DT
     104 D WDAY
     105 Q RMTO
     106WDAY ;       RB - begining date
     107 ;       RE - ending date
     108 ;Return variable:
     109 ;       RMTO - working days
     110 ;Changed 03/26/03 to make a call to XUWORKDY to not count Holidays
     111 ;In order to not couont Holidays the site must keep the Holiday file
     112 ;current.
     113 S RMTO=$$EN^XUWORKDY(RB,RE)
     114 Q
     115 ;Set days as Monday the FIRST day and so on:
     116 ;       Monday    = 1
     117 ;       Sunday    = 7
     118 ;If invalid dates, return ZERO.
     119 N X,Y,RMB,RME,RMTOT,RDSDAY,RDEDAY,RBCA,RNOB,RMNOD,RECA,RNO
     1201 S X1=RE,X2=RB D ^%DTC S RMNOD=X
     121 S (RMTO,RMTOT,RECA)=0
     122 S X=RB D DW^%DTC S RMB=X
     123 S X=RE D DW^%DTC S RME=X
     124 I (RB=RE)!(RB>RE)!(RMNOD'>0) Q
     125 ;Get the FIRST set of Monday to Sunday days.
     126 S RDSDAY=$S(RMB["MON":1,RMB["TUE":2,RMB["WED":3,RMB["THU":4,RMB["FRI":5,RMB["SAT":6,RMB["SUN":7,1:0)
     127 S RNOB=$S(RDSDAY=1:4,RDSDAY=2:3,RDSDAY=3:2,RDSDAY=4:1,1:0)
     128 I RNOB=4,RMNOD<7 S RNOB=$S(RMNOD=1:1,RMNOD=2:2,RMNOD=3:3,1:4)
     129 I RNOB=3,RMNOD<6 S RNOB=$S(RMNOD=1:1,RMNOD=2:2,1:3)
     130 I RNOB=2,RMNOD<5 S RNOB=$S(RMNOD=1:1,1:2)
     131 S RBCA=7-RDSDAY
     132 S RMNOD=RMNOD-RBCA
     133 ;Get the SECOND set of Monday to Sunday days.
     134 S RDEDAY=$S(RME["MON":1,RME["TUE":2,RME["WED":3,RME["THU":4,RME["FRI":5,RME["SAT":6,RME["SUN":7,1:0)
     135 I RMNOD>0 D
     136 .S RECA=$S(RDEDAY=7:5,RDEDAY=6:5,1:RDEDAY)
     137 .S RMNOD=RMNOD-RDEDAY
     138 ;
     139 ;calculate totals
     140 S RMTOT=RMTOT+RNOB+RECA
     141 I RMNOD>0,RMNOD<6 S RMTOT=RMTOT+RMNOD
     142 I RMNOD=6 S RMTOT=RMTOT+RMNOD-1
     143 I RMNOD=7 S RMTOT=RMTOT+RMNOD-2
     144 ;if the FIRST and SECOND set of Monday to Sunday total is
     145 ;still greater than 7 days, exclude Saturday and Sunday - don't count.
     146 I RMNOD>7 S RMTOT=RMTOT+(RMNOD-((RMNOD/7)*2))
     147 S RMTO=$J(RMTOT,0,0)
     148END ;
Note: See TracChangeset for help on using the changeset viewer.