| 1 | RMPRPCED ;Hines OIFO/RVD - Prosthetics/660/668/PCE DELETE ;7/30/02  09:39
 | 
|---|
| 2 |  ;;3.0;PROSTHETICS;**62,70,121,131,141**;Feb 09, 1996;Build 5
 | 
|---|
| 3 |  ;RVD 7/1/02 - patch #70 - new RMPR variables before calling PCE.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ; This routine contains the code for deleting a Prosthetic visit in PCE.
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ;DBIA #1890  - this API is used to delete data from the VISIT file
 | 
|---|
| 8 |  ;              (9000010) and V files from PCE module.
 | 
|---|
| 9 |  ;DBIA #10048 - fileman read on file 9.4.
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 | DEL(RMIE60) ;delete PCE visit.
 | 
|---|
| 12 |  D NEWVAR
 | 
|---|
| 13 |  S (RMLOCK,RMERR)=0
 | 
|---|
| 14 |  I '$P($G(^RMPR(660,RMIE60,10)),U,12) G DEL68
 | 
|---|
| 15 |  S RMSRC="PROSTHETICS DATA"
 | 
|---|
| 16 |  S X="PROSTHETICS",DIC="^DIC(9.4," D ^DIC
 | 
|---|
| 17 |  I '$D(Y)!(Y<0) S RMERR=-1 G DELX
 | 
|---|
| 18 |  S RMPKG=+Y
 | 
|---|
| 19 |  I 'RMPKG S RMERR=-1 G DELX
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  ; get PCE IEn from file #660.
 | 
|---|
| 22 |  S RMPCE=$P($G(^RMPR(660,RMIE60,10)),U,12)
 | 
|---|
| 23 |  I 'RMPCE S RMERR=-1 G DELX
 | 
|---|
| 24 |  I '$D(^AUPNVSIT(RMPCE,0)) G DEL68
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 | DELVF ; Remove all workload data from the PCE visit file & related V files.
 | 
|---|
| 27 |  ; check if the visit is already in PCE and remove workload,
 | 
|---|
| 28 |  ; (sending RMPKG and RMSRC to ensure that only data that originally
 | 
|---|
| 29 |  ; came from PROSTHETICS will be removed).
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  N RMPR,REDO,VEJD
 | 
|---|
| 32 |  S REDO=0
 | 
|---|
| 33 | DELVF1 S RMCHK=$$DELVFILE^PXAPI("ALL",.RMPCE,RMPKG,RMSRC,0,0,"")
 | 
|---|
| 34 |  I RMCHK'=1 D  I REDO=1 G DELVF1
 | 
|---|
| 35 |  . Q:$P($G(^AUPNVSIT(RMPCE,0)),U,9)'=1!REDO
 | 
|---|
| 36 |  . S VEJD=$O(^VEJD(19610.5,"B",RMPCE,0)) Q:VEJD=""
 | 
|---|
| 37 |  . ;kill remaining dependent (DSS) to visit
 | 
|---|
| 38 |  . S DA=VEJD,DIK="^VEJD(19610.5," D ^DIK
 | 
|---|
| 39 |  . K DA,DIK
 | 
|---|
| 40 |  . I $P(^AUPNVSIT(RMPCE,0),U,9)=0 S REDO=1
 | 
|---|
| 41 |  I RMCHK'=1 W !!,"*** Error in deleting PCE visit !!",! S RMERR=-1 G DELX
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 | DEL68 ; delete PCE info in file #668.
 | 
|---|
| 44 |  S RMAMIS=$G(^RMPR(660,RMIE60,"AMS"))
 | 
|---|
| 45 |  S RMIE68=$O(^RMPR(668,"F",RMIE60,0)) G:RMIE68="" DEL60
 | 
|---|
| 46 |  L +^RMPR(668,RMIE68):3 I $T=0 D ERR68 G DELX
 | 
|---|
| 47 |  S DA=$O(^RMPR(668,RMIE68,10,"B",RMIE60,0))
 | 
|---|
| 48 |  S DA(1)=RMIE68,DIK="^RMPR(668,"_DA(1)_",10," D ^DIK
 | 
|---|
| 49 |  S RMAMIEN=$O(^RMPR(668,RMIE68,11,"B",RMAMIS,0))
 | 
|---|
| 50 |  S RMCNT=0
 | 
|---|
| 51 |  F I=0:0 S I=$O(^RMPR(668,RMIE68,10,"B",I)) Q:I'>0  D
 | 
|---|
| 52 |  .S RMAMIS68=$G(^RMPR(660,I,"AMS")) S:RMAMIS68=RMAMIS RMCNT=RMCNT+1
 | 
|---|
| 53 |  ;if no other line item of the same GROUPER #, then delete.
 | 
|---|
| 54 |  I RMCNT=1,RMAMIEN D
 | 
|---|
| 55 |  .S DA=RMAMIEN
 | 
|---|
| 56 |  .S DA(1)=RMIE68,DIK="^RMPR(668,"_DA(1)_",11,"
 | 
|---|
| 57 |  .D ^DIK
 | 
|---|
| 58 |  L -^RMPR(668,RMIE68)
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 | DEL60 ; delete PCE info in file #660.
 | 
|---|
| 61 |  ; lock file #660
 | 
|---|
| 62 |  L +^RMPR(660,RMIE60,10):3 I $T=0 D ERR60 G DELX
 | 
|---|
| 63 |  S RMARR(660,RMIE60_",",8.12)="@"
 | 
|---|
| 64 |  S RMARR(660,RMIE60_",",8.13)="@"
 | 
|---|
| 65 |  D FILE^DIE("","RMARR","")
 | 
|---|
| 66 |  L -^RMPR(660,RMIE60,10)
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  ; exit delete
 | 
|---|
| 69 | DELX Q RMERR
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 | ERR68 ; print error if unable to delete/update file #668.
 | 
|---|
| 72 |  W !!,"*** File #668 is locked, IEN = ",RMIE68,", PLEASE contact your IRM!!",!!
 | 
|---|
| 73 |  L -^RMPR(668,RMIE68)
 | 
|---|
| 74 |  S RMERR=-1
 | 
|---|
| 75 |  Q
 | 
|---|
| 76 | ERR60 ; print error if unable to delete/update file #660.
 | 
|---|
| 77 |  W !!,"*** File #660 is locked, IEN = ",RMIE60,", PLEASE contact your IRM!!",!!
 | 
|---|
| 78 |  S RMERR=-1
 | 
|---|
| 79 |  Q
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 | CHECK ;check for return error from PCE
 | 
|---|
| 82 |  ;input variable RMPROB
 | 
|---|
| 83 |  I $D(RMPROB($J,1))!$D(RMPROB($J,2)) D
 | 
|---|
| 84 |  .S (R2,R3,RMMESS)=""
 | 
|---|
| 85 |  .F R1=0:0 S R1=$O(RMPROB($J,R1)) Q:R1'>0  F  S R2=$O(RMPROB($J,R1,"ERROR1",R2)) Q:R2=""  F  S R3=$O(RMPROB($J,R1,"ERROR1",R2,R3)) Q:R3=""  D
 | 
|---|
| 86 |  ..F R4=0:0 S R4=$O(RMPROB($J,R1,"ERROR1",R2,R3,R4)) Q:R4'>0  D
 | 
|---|
| 87 |  ...S RMMESS=RMPROB($J,R1,"ERROR1",R2,R3,R4)
 | 
|---|
| 88 |  ...W:RMMESS'="" !,"???? ",RMMESS
 | 
|---|
| 89 |  ...I (RMMESS["CPT")!(RMMESS["Provider") S RMPRCPER=1
 | 
|---|
| 90 |  Q
 | 
|---|
| 91 |  ;
 | 
|---|
| 92 | PRV ;PROVIDER VALIDATION PRIOR TO PCE INTERFACE CALL
 | 
|---|
| 93 |  K PXAA,PXADI,PXAERR N PXAVDATE,PXAERRF
 | 
|---|
| 94 |  S PXAA("NAME")=^TMP("RMPRPCE1",$J,"PXAPI","PROVIDER",1,"NAME"),PXAVDATE=$P(^TMP("RMPRPCE1",$J,"PXAPI","ENCOUNTER",1,"ENC D/T"),".")
 | 
|---|
| 95 |  ;CHECKER
 | 
|---|
| 96 |  ;----Missing a pointer to providers name
 | 
|---|
| 97 |  I $G(PXAA("NAME"))']"" D  G PRVX:$G(STOP)
 | 
|---|
| 98 |  .S STOP=1 ;--USED TO STOP DO LOOP
 | 
|---|
| 99 |  .S PXAERRF=1 ;--FLAG INDICATES THERE IS AN ERR
 | 
|---|
| 100 |  .S PXADI("DIALOG")=8390001.001
 | 
|---|
| 101 |  .S PXAERR(9)="NAME"
 | 
|---|
| 102 |  .S PXAERR(11)=$G(PXAA("NAME"))
 | 
|---|
| 103 |  .S PXAERR(12)="You are missing a pointer to the NEW PERSON file #200 that represents the Provider's name"
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 |  ;----Not a pointer to NEW PERSON file#200
 | 
|---|
| 106 |  I $G(PXAA("NAME"))'["@" D 01^PXAIUPRV($G(PXAA("NAME"))) I $G(PXAIVAL)=1 K PXAIVAL,PXCA("ERROR") D  G PRVX:$G(STOP)
 | 
|---|
| 107 |  .S STOP=1
 | 
|---|
| 108 |  .S PXAERRF=1
 | 
|---|
| 109 |  .S PXADI("DIALOG")=8390001.001
 | 
|---|
| 110 |  .S PXAERR(9)="NAME"
 | 
|---|
| 111 |  .S PXAERR(11)=$G(PXAA("NAME"))
 | 
|---|
| 112 |  .S PXAERR(12)=PXAERR(11)_" is NOT a pointer value to the NEW PERSON file #200 for Provider"
 | 
|---|
| 113 |  ;
 | 
|---|
| 114 |  ;----Not have an active person class
 | 
|---|
| 115 |  N CLASS
 | 
|---|
| 116 |  S CLASS=+$$GET^XUA4A72($G(PXAA("NAME")),PXAVDATE) I CLASS<0 D
 | 
|---|
| 117 |  .S STOP=1
 | 
|---|
| 118 |  .S PXAERRF=1
 | 
|---|
| 119 |  .S PXADI("DIALOG")=8390001.001
 | 
|---|
| 120 |  .S PXAERR(9)="NAME"
 | 
|---|
| 121 |  .S PXAERR(11)=$G(PXAA("NAME"))
 | 
|---|
| 122 |  .S PXAERR(12)="The Provider does not have an ACTIVE person class!"
 | 
|---|
| 123 | PRVX I STOP D
 | 
|---|
| 124 |  . S RMERR=0 K RMPCE
 | 
|---|
| 125 |  . S RMPROB($J,2,"ERROR1","PROVIDER","NAME",1)=PXAERR(12)
 | 
|---|
| 126 |  K PXAERR,PXAERRF,PXADI,PXAA
 | 
|---|
| 127 |  Q
 | 
|---|
| 128 | NEWVAR ; new variables
 | 
|---|
| 129 |  N Y
 | 
|---|
| 130 |  N I,RMCHK,RMKI,RMSUB,RMARR,DIE,DA,DIC,RMAMIS,RMAMIS68,DIK,RMCNT,RMAMIEN
 | 
|---|
| 131 |  Q
 | 
|---|