| 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 ;
 | 
|---|