| 1 | RMPRPCEB ;HIN/RVD-PROS PCE BACKGROUND UTILITY ; 1/23/04 8:09am
 | 
|---|
| 2 |  ;;3.0;PROSTHETICS;**62,69,77,82,78,114,120,133,142**;Feb 09, 1996;Build 2
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;RVD patch #69 - add STATION in the error message.
 | 
|---|
| 5 |  ;                QUIT if no data in specified date range.
 | 
|---|
| 6 |  ;RVD patch #77 - only create 1 PCE entry for the same pt & same day.
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  ;KAM Patch #82 06/21/2004 - Add more robust text to 'Missing
 | 
|---|
| 9 |  ;                           Prosthetics Clinic PCE error message
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ;WLC Patch #78 02/03/3005 - added NEW statement for error message
 | 
|---|
| 12 |  ;                           variables defined for Patch 82.
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  W !,"Invalid Entry Point.....",!
 | 
|---|
| 15 |  Q
 | 
|---|
| 16 | TASK ;entry point for task job to send pros encounters to PCE.
 | 
|---|
| 17 |  N RERRMSG,RERRMSG2  ; correction for patch 82  02/03/05 WLC
 | 
|---|
| 18 |  S IO=0,RMAIL=1,SVDUZ=DUZ,DUZ=.5
 | 
|---|
| 19 |  S Y=DT D DD^%DT S RMRDAT=Y K RMX,RMXMT,^TMP($J)
 | 
|---|
| 20 |  D NOW^%DTC S RMSTDT=%
 | 
|---|
| 21 |  S X="T-90" D ^%DT S RM90DAY=Y
 | 
|---|
| 22 |  S RMBIEN=$O(^RMPR(660,"B",RM90DAY))
 | 
|---|
| 23 |  Q:RMBIEN=""
 | 
|---|
| 24 |  S (RMENDT,RFLDAT)=0
 | 
|---|
| 25 |  F RS=0:0 S RS=$O(^RMPR(669.9,RS)) Q:RS'>0  D PCEFLG
 | 
|---|
| 26 |  S RI=$O(^RMPR(660,"B",RMBIEN,0))-1     ;starts at proper ien RMPR*120
 | 
|---|
| 27 |  F  S RI=$O(^RMPR(660,RI)) Q:RI'>0  D
 | 
|---|
| 28 |  .S RM600=$G(^RMPR(660,RI,0))
 | 
|---|
| 29 |  .I $P(RM600,U,2)="" Q
 | 
|---|
| 30 |  .S RM611=$G(^RMPR(660,RI,1))
 | 
|---|
| 31 |  .S RM610=$G(^RMPR(660,RI,10))
 | 
|---|
| 32 |  .Q:$P(RM600,U,15)
 | 
|---|
| 33 |  .Q:$P(RM600,U,17)
 | 
|---|
| 34 |  .Q:'$P(RM610,U,8)
 | 
|---|
| 35 |  .S RMSTA=$P(RM600,U,10)
 | 
|---|
| 36 |  .;quit if already been processed.
 | 
|---|
| 37 |  .Q:$P(RM610,U,12)
 | 
|---|
| 38 |  .Q:(RMSTA="")!('$D(RSTAFLG(RMSTA)))
 | 
|---|
| 39 |  .Q:'$P(RM611,U,4)!'$P(RM600,U,22)
 | 
|---|
| 40 |  .S RMDATE=$P(RM600,U,1),RMDFN=$P(RM600,U,2)
 | 
|---|
| 41 |  .S RMICD9=$P(RM610,U,8) I RMICD9'="" Q:$P($G(^ICD9(RMICD9,0)),U,9)  ;quit if DX code inactive RMPR*120
 | 
|---|
| 42 |  .Q:$D(^TMP($J,RMSTA,RMDATE,RMDFN))
 | 
|---|
| 43 |  .S RMPROCF=0
 | 
|---|
| 44 |  .F J=0:0 S J=$O(^RMPR(660,"C",RMDFN,J)) Q:J'>0  D
 | 
|---|
| 45 |  ..S RMJ60=$G(^RMPR(660,J,0)),RMJDT=$P(RMJ60,U,1),RMJST=$P(RMJ60,U,10)
 | 
|---|
| 46 |  ..Q:(RMJST'=RMSTA)!(RMJDT'=RMDATE)
 | 
|---|
| 47 |  ..S RMJ610=$G(^RMPR(660,J,10)),RMJ12=$P(RMJ610,U,12)
 | 
|---|
| 48 |  ..I $G(RMJ12) S RMPROCF=1
 | 
|---|
| 49 |  .;don't process if PCE data was process for the same day.
 | 
|---|
| 50 |  .Q:$G(RMPROCF)
 | 
|---|
| 51 |  .S ^TMP($J,RMSTA,RMDATE,RMDFN,RI)=""
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 |  D PROC
 | 
|---|
| 54 |  I '$D(^TMP($J,"RMPRERR")) D
 | 
|---|
| 55 |  .S ^TMP($J,"RMPR",5)="***** NO ERROR TO REPORT !!!!!"
 | 
|---|
| 56 |  S RMSUBI=4 D BUILD D:$D(^XMB(3.8,"B","RMPR PCE")) MES1,MES2
 | 
|---|
| 57 |  G EXIT
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 | PCEFLG ;
 | 
|---|
| 60 |  S:$D(^RMPR(669.9,RS,"PCE")) RFLDAT=$P($G(^RMPR(669.9,RS,"PCE")),U,2)
 | 
|---|
| 61 |  S:'$D(^RMPR(669.9,RS,"PCE")) RFLDAT=0
 | 
|---|
| 62 |  S RSTAFLG($P(^RMPR(669.9,RS,0),U,2))=RFLDAT
 | 
|---|
| 63 |  S $P(^RMPR(669.9,RS,"PCE"),U,1)=RMSTDT
 | 
|---|
| 64 |  Q
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 | PROC ;process
 | 
|---|
| 67 |  F RS=0:0 S RS=$O(^TMP($J,RS)) Q:RS'>0  F RII=0:0 S RII=$O(^TMP($J,RS,RII)) Q:RII'>0  F RJ=0:0 S RJ=$O(^TMP($J,RS,RII,RJ)) Q:RJ'>0  S RK=$O(^TMP($J,RS,RII,RJ,0)) D
 | 
|---|
| 68 |  .;call PCE Interface
 | 
|---|
| 69 |  .S RMIE60RK=RK
 | 
|---|
| 70 |  .S RMC=$$SENDPCE^RMPRPCEA(RK)
 | 
|---|
| 71 |  . I RMC<1 D
 | 
|---|
| 72 |  ..S RSNAM="        "
 | 
|---|
| 73 |  ..I $G(RS),$D(^DIC(4,RS,0)) S RSNAM=$E($P(^DIC(4,RS,0),U,1),1,8)
 | 
|---|
| 74 |  ..S ^TMP($J,"RMPRERR",RK)="Station: "_RSNAM_", File #660 IEN="_RK_" - Error in PCE interface!!!"
 | 
|---|
| 75 |  ..;Added next line for RMPR*3*82
 | 
|---|
| 76 |  ..I '$G(RMLOC) S ^TMP($J,"RMPRERR",RK)=^TMP($J,"RMPRERR",RK)_$G(RERRMSG)_$G(RERRMSG2)
 | 
|---|
| 77 |  ..I $D(RMPROB($J,1))!$D(RMPROB($J,2)) D
 | 
|---|
| 78 |  ...S (R2,R3,RMMESS)="",R6I=RK,RC=0
 | 
|---|
| 79 |  ...F R1=0:0 S R1=$O(RMPROB($J,R1)) Q:R1'>0  S RC=RC+1 F  S R2=$O(RMPROB($J,R1,"ERROR1",R2)) Q:R2=""  F  S R3=$O(RMPROB($J,R1,"ERROR1",R2,R3)) Q:R3=""  D
 | 
|---|
| 80 |  ....F R4=0:0 S R4=$O(RMPROB($J,R1,"ERROR1",R2,R3,R4)) Q:R4'>0  D
 | 
|---|
| 81 |  .....S RMMESS=RMPROB($J,R1,"ERROR1",R2,R3,R4),RMK=R6I_"."_RC,^TMP($J,"RMPRERR",RMK)="    ???? "_$E(RMMESS,1,999)
 | 
|---|
| 82 |  .....K RMPROB($J,R1,"ERROR1",R2,R3,R4)
 | 
|---|
| 83 |  K RMPROB
 | 
|---|
| 84 |  Q
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 | MES1 ;
 | 
|---|
| 87 |  S XMY("G.RMPR PCE")="",XMDUZ=.5,XMTEXT="^TMP($J,""RMPR"","
 | 
|---|
| 88 |  S XMSUB="PROSTHETICS PCE BACKGROUND MESSAGE"
 | 
|---|
| 89 |  S ^TMP($J,"RMPR",1)="Run Date: "_RMRDAT
 | 
|---|
| 90 |  S ^TMP($J,"RMPR",2)="This is a notification from the Prosthetics Department........"
 | 
|---|
| 91 |  S ^TMP($J,"RMPR",3)=""
 | 
|---|
| 92 |  S ^TMP($J,"RMPR",4)=""
 | 
|---|
| 93 |  Q
 | 
|---|
| 94 | MES2 ;
 | 
|---|
| 95 |  S ^TMP($J,"RMPR",RMSUBI+2)=""
 | 
|---|
| 96 |  I $D(^TMP($J,"RMPRERR")) S ^TMP($J,"RMPR",RMSUBI+3)="*** Please contact your PCE Coordinator or IRM ***"
 | 
|---|
| 97 |  I '$D(^TMP($J,"RMPRERR")) S ^TMP($J,"RMPR",RMSUBI+3)=""
 | 
|---|
| 98 |  S ^TMP($J,"RMPR",RMSUBI+4)=""
 | 
|---|
| 99 |  S ^TMP($J,"RMPR",RMSUBI+5)="Thank You!!!"
 | 
|---|
| 100 |  S ^TMP($J,"RMPR",RMSUBI+6)=""
 | 
|---|
| 101 |  S ^TMP($J,"RMPR",RMSUBI+7)="PROSTHETICS DEPARTMENT"
 | 
|---|
| 102 |  D ^XMD
 | 
|---|
| 103 |  D NOW^%DTC
 | 
|---|
| 104 |  ;if task finish to completion and;
 | 
|---|
| 105 |  ;if no errors, set the PCE end date of the background job in #669.9.
 | 
|---|
| 106 |  F RS=0:0 S RS=$O(^RMPR(669.9,RS)) Q:RS'>0  S $P(^RMPR(669.9,RS,"PCE"),U,2)=%
 | 
|---|
| 107 |  Q
 | 
|---|
| 108 |  ;
 | 
|---|
| 109 | BUILD ;
 | 
|---|
| 110 |  F I=0:0 S I=$O(^TMP($J,"RMPRERR",I)) Q:I'>0  D
 | 
|---|
| 111 |  .S RMMAIL=^TMP($J,"RMPRERR",I)
 | 
|---|
| 112 |  .S RMSUBI=RMSUBI+1
 | 
|---|
| 113 |  .S ^TMP($J,"RMPR",RMSUBI)=RMMAIL
 | 
|---|
| 114 |  Q
 | 
|---|
| 115 |  ;
 | 
|---|
| 116 | EXIT ;MAIN EXIT POINT
 | 
|---|
| 117 |  K ^TMP($J)
 | 
|---|
| 118 |  S DUZ=SVDUZ
 | 
|---|
| 119 |  N RMPRSITE,RMPR D KILL^XUSCLEAN
 | 
|---|
| 120 |  Q
 | 
|---|