| 1 | RMPRDDC ;VACO/HNC - SERVER ROUTINE FOR DALC RECORD IN 660 ; 11/01/2006 | 
|---|
| 2 | ;;3.0;PROSTHETICS;**60,141**;Feb 09, 1996;Build 5 | 
|---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | ;DBIA # 10072 - for routine REMSBMSG^XMA1C | 
|---|
| 6 | ;DBIA # ????? - for D FIND^DIC(2,,".09" | 
|---|
| 7 | ; | 
|---|
| 8 | MAIN ;main entry point | 
|---|
| 9 | ;loop msg | 
|---|
| 10 | K RMPRMSG | 
|---|
| 11 | N ERR | 
|---|
| 12 | S RMPRCNT=0 | 
|---|
| 13 | S RMPRMSGC=0 | 
|---|
| 14 | F  X XMREC Q:XMRG=""  D | 
|---|
| 15 | .S RMPRDATA=XMRG | 
|---|
| 16 | .Q:RMPRDATA="ENCRYPTED STRING" | 
|---|
| 17 | .S (RMPRTD,RMPRMPI,RMPRSSN,RMPRNAM,RMPRTRAN,RMPRCAT,RMPRPP,RMPRICD,RMPRITM,RMPRHCPE,RMPRHCP,RMPRSTN,RMPRCMT,RMPRCOST,RMPRQTY,RMPRREF,RMPRSRL,RMPRVND,RMPRDUN,RMPRTAX,RMPRRT,DFN)="" | 
|---|
| 18 | .;parse data string | 
|---|
| 19 | .S RMPRNPMN=$P(XQSUB,"#",2) | 
|---|
| 20 | .S RMPRMSGC=RMPRMSGC+1 | 
|---|
| 21 | .S RMPRCNT=RMPRCNT+1 | 
|---|
| 22 | .S RMPRFLG=$P($G(RMPRDATA),U,21)  ;retransmission flag Y or N | 
|---|
| 23 | .S X=$P($P($G(RMPRDATA),U,1),".",1)  ;transaction date | 
|---|
| 24 | .S X=$E(X,5,6)_"/"_$E(X,7,8)_"/"_$E(X,3,4) D ^%DT S RMPRTD=Y | 
|---|
| 25 | .I RMPRTD=-1 S RMPRTD="" | 
|---|
| 26 | .S RMPRMPI=$P($G(RMPRDATA),U,2)  ;MPI | 
|---|
| 27 | .S RMPRSSN=$P($G(RMPRDATA),U,3)  ;SSN | 
|---|
| 28 | .S RMPRPNAM=$P($G(RMPRDATA),U,4)  ;Patient Name | 
|---|
| 29 | .S RMPRTRAN=$P($G(RMPRDATA),U,5)  ;Type New or Repair | 
|---|
| 30 | .I RMPRTRAN="N" S RMPRTRAN="I"  ;new trans | 
|---|
| 31 | .I RMPRTRAN="R" S RMPRTRAN="X"  ;repair trans | 
|---|
| 32 | .S RMPRCAT=$P($G(RMPRDATA),U,6)  ;category NSC or SC | 
|---|
| 33 | .I RMPRCAT="NSC" S RMPRCAT=4 | 
|---|
| 34 | .I RMPRCAT="SC" S RMPRCAT=1 | 
|---|
| 35 | .S RMPRPP=$P($G(RMPRDATA),U,7)  ;Person placing order DALC STAFF or VET | 
|---|
| 36 | .S RMPRICD=$P($G(RMPRDATA),U,8)  ;ICD9 blank for now | 
|---|
| 37 | .S RMPRITM=$P($G(RMPRDATA),U,9)  ;Item HCPCS short desc | 
|---|
| 38 | .S RMPRHCPE=$P($G(RMPRDATA),U,10)  ;hcpcs | 
|---|
| 39 | .S RMPRHCP="" | 
|---|
| 40 | .S RMPRHCP=$O(^RMPR(661.1,"B",RMPRHCPE,RMPRHCP)) | 
|---|
| 41 | .I RMPRHCP="" S RMPRITM=RMPRITM_" *NOT VALID" | 
|---|
| 42 | .S RMPRSTN=$P($G(RMPRDATA),U,11)  ;station billing number | 
|---|
| 43 | .S RMPRCMT=$P($G(RMPRDATA),U,12)  ;comment | 
|---|
| 44 | .S RMPRCOST=$P($G(RMPRDATA),U,13)  ;total cost | 
|---|
| 45 | .S RMPRQTY=$P($G(RMPRDATA),U,14)  ;qty | 
|---|
| 46 | .S RMPRREF=$P($G(RMPRDATA),U,15)  ;ddc internal reference | 
|---|
| 47 | .S RMPRSRL=$P($G(RMPRDATA),U,16)  ;serial number | 
|---|
| 48 | .S RMPRVND=$P($G(RMPRDATA),U,17)  ;vendor as text | 
|---|
| 49 | .S RMPRDUN=$P($G(RMPRDATA),U,18)  ;dun | 
|---|
| 50 | .S RMPRTAX=$P($G(RMPRDATA),U,19)  ;tax | 
|---|
| 51 | .; RMPRDAT,U,21 IS RESERVED FOR A RETURN NUMBER TBD SKIPPED | 
|---|
| 52 | .S RMPROS=$P($G(RMPRDATA),U,22)   ;ordering station | 
|---|
| 53 | .S RMPRSTA=$$FIND1^DIC(4,"","X",RMPROS,"D","","ERR") | 
|---|
| 54 | .I $D(ERR)!(RMPRSTA'>0) D | 
|---|
| 55 | .. S RMPR6699=$O(^RMPR(669.9,0)),RMPRSTA=$P(^RMPR(669.9,RMPR6699,0),U,2) | 
|---|
| 56 | .S X=$P($G(RMPRDATA),U,20)  ;return date | 
|---|
| 57 | .S X=$E(X,5,6)_"/"_$E(X,7,8)_"/"_$E(X,3,4) D ^%DT S RMPRRT=Y | 
|---|
| 58 | .I RMPRRT=-1 S RMPRRT="" | 
|---|
| 59 | .;file | 
|---|
| 60 | .D NOW^%DTC S RMPRWHN=$P(%,".",1) | 
|---|
| 61 | .;check to see if new | 
|---|
| 62 | .I $D(^RMPR(660,"DDC",RMPRREF)) S RMPRMSG(RMPRMSGC)="Record already on file, Not Processed: "_RMPRREF Q | 
|---|
| 63 | .;find patient | 
|---|
| 64 | .D FIND^DIC(2,,".09","PS",RMPRSSN,3,"SSN","","","RMPROUT") | 
|---|
| 65 | .I '$G(RMPROUT("DILIST","1",0)) S RMPRMSG(RMPRMSGC)="Patient Not Found Not Processed: "_RMPRREF Q | 
|---|
| 66 | .I $G(RMPROUT("DISLIST",2,0)) S RMPRMSG(RMPRMSGC)="More than one Patient with Same SSN, Patient Not Processed: "_RMPRREF Q  ;more than one with same ssn | 
|---|
| 67 | .S DFN=$P(RMPROUT("DILIST",1,0),U,1) | 
|---|
| 68 | .;check 665 if not there add it | 
|---|
| 69 | .;array to file | 
|---|
| 70 | .K RMPRERR,RMPR660 | 
|---|
| 71 | .S RMPR660(660,"+1,",.01)=RMPRWHN | 
|---|
| 72 | .S RMPR660(660,"+1,",.02)=DFN | 
|---|
| 73 | .S RMPR660(660,"+1,",1)=RMPRTD | 
|---|
| 74 | .S RMPR660(660,"+1,",89.2)=RMPRTD | 
|---|
| 75 | .S RMPR660(660,"+1,",2)=RMPRTRAN | 
|---|
| 76 | .S RMPR660(660,"+1,",4.2)=RMPRPP | 
|---|
| 77 | .S RMPR660(660,"+1,",62)=RMPRCAT | 
|---|
| 78 | .S RMPR660(660,"+1,",89)=RMPRITM | 
|---|
| 79 | .S RMPR660(660,"+1,",24)=RMPRITM | 
|---|
| 80 | .S RMPR660(660,"+1,",16)=RMPRCMT | 
|---|
| 81 | .S RMPR660(660,"+1,",14)=RMPRCOST | 
|---|
| 82 | .S RMPR660(660,"+1,",5)=RMPRQTY | 
|---|
| 83 | .S RMPR660(660,"+1,",9)=RMPRSRL | 
|---|
| 84 | .S RMPR660(660,"+1,",91)=RMPRVND | 
|---|
| 85 | .S RMPR660(660,"+1,",92)=RMPRDUN | 
|---|
| 86 | .S RMPR660(660,"+1,",93)=RMPRTAX | 
|---|
| 87 | .S RMPR660(660,"+1,",17.5)=RMPRRT | 
|---|
| 88 | .S RMPR660(660,"+1,",17)=1 | 
|---|
| 89 | .S RMPR660(660,"+1,",89.3)=RMPROS | 
|---|
| 90 | .S RMPR660(660,"+1,",90)=RMPRSTN | 
|---|
| 91 | .S RMPR660(660,"+1,",4.5)=RMPRHCP | 
|---|
| 92 | .S RMPR660(660,"+1,",89.1)=RMPRREF | 
|---|
| 93 | .S RMPR660(660,"+1,",11)=16 | 
|---|
| 94 | .S RMPR660(660,"+1,",12)="V"  ;source | 
|---|
| 95 | .S RMPR660(660,"+1,",15)="*"  ;historical data flag | 
|---|
| 96 | .D UPDATE^DIE("","RMPR660","","RMPRERR") | 
|---|
| 97 | .I $D(RMPRERR) D | 
|---|
| 98 | .  .S RMPRMSG(RMPRMSGC)=$G(RMPRERR("DIERR","1","TEXT",1))_"Error Not Processed: "_RMPRREF | 
|---|
| 99 | .  .;S RMPRMSG(RMPRMSGC)="Error Not Processed: "_RMPRREF | 
|---|
| 100 | .  .S XMY("G.RMPR SERVER")="" | 
|---|
| 101 | .S RMPRMSG(RMPRMSGC)="Done: "_RMPRREF | 
|---|
| 102 | ;Send email to ddc with number of records processed | 
|---|
| 103 | S XMDUZ=.5 | 
|---|
| 104 | S XMY("G.RMPR SERVER")="" | 
|---|
| 105 | S XMY("S.RMPRACKDALC@DDC.VA.GOV")="" | 
|---|
| 106 | S XMSUB="Prosthetics - DALC Interface Summary NPNM #"_RMPRNPMN | 
|---|
| 107 | S RMPRMSGC=RMPRMSGC+1 | 
|---|
| 108 | S RMPRMSG(RMPRMSGC)="Total Records Received: "_RMPRCNT | 
|---|
| 109 | S XMTEXT="RMPRMSG(" | 
|---|
| 110 | D ^XMD | 
|---|
| 111 | ; | 
|---|
| 112 | EXIT ;main exit point | 
|---|
| 113 | K RMPRTD,RMPRMPI,RMPRSSN,RMPRNAM,RMPRTRAN,RMPRCAT,RMPRPP,RMPRICD | 
|---|
| 114 | K RMPRITM,RMPRHCPE,RMPRHCP,RMPRSTN,RMPRCMT,RMPRCOST,RMPRQTY,RMPRREF | 
|---|
| 115 | K RMPRSRL,RMPRVND,RMPRDUN,RMPRTAX,RMPRRT,DFN,RMPR(660),RMPRCNT,RMPRDATA | 
|---|
| 116 | K RMPRFLG,RMPROUT,RMPRNAM,RMPRWHN,RMPRMSGC,RMPRPNAM,RMPRNPMN,RMPRSTA,RMPR6699 | 
|---|
| 117 | ;purge server message | 
|---|
| 118 | S XMSER="S."_XQSOP,XMZ=XQMSG D REMSBMSG^XMA1C | 
|---|
| 119 | Q | 
|---|
| 120 | ;END | 
|---|