[623] | 1 | ECXPRO1 ;ALB/GTS - Prosthetics Extract for DSS (Continued) ; DEC 15, 2006
|
---|
| 2 | ;;3.0;DSS EXTRACTS;**9,11,13,15,21,24,33,37,39,100**;Dec 22, 1997;Build 2
|
---|
| 3 | ;
|
---|
| 4 | NTEG(ECXDFN,ECXLNE,ECXPIEN,ECXN0,ECXNLB,ECINST,ECXFORM) ;** Check for required fields
|
---|
| 5 | ; Input
|
---|
| 6 | ; ECXDFN - ien in file #2
|
---|
| 7 | ; ECXLNE - line number variable (passed by reference)
|
---|
| 8 | ; ECXPIEN - IEN for the Prosthetics record
|
---|
| 9 | ; ECXN0 - zero node of the Prosthetics record
|
---|
| 10 | ; ECXNLB - LB node of the Prosthetics record
|
---|
| 11 | ; ECINST - station number being extracted
|
---|
| 12 | ; ECXFORM - Form Requested On
|
---|
| 13 | ; Output (to be KILLed by calling routine)
|
---|
| 14 | ; ^TMP("ECX-PRO EXC",$J) - Array for the exception message
|
---|
| 15 | ; ECXLNE - The number of the next line in the msg
|
---|
| 16 | ; ECXSTAT2 - Patient Station Number
|
---|
| 17 | ; ECXDATE - Delivery Date of Prosthesis
|
---|
| 18 | ; ECXTYPE - Type of Transaction work performed
|
---|
| 19 | ; ECXSRCE - Source of prosthesis
|
---|
| 20 | ; ECXHCPCS - CPT/HCPCS code for prosthesis
|
---|
| 21 | ; ECXRQST - Requesting Station
|
---|
| 22 | ; ECXRCST - Receiving Station
|
---|
| 23 | ; ECXPHCPC - PSAS HCPCS code; if 'unknown', then use CPT/HCPCS code
|
---|
| 24 | ; Output (KILLed by NTEG)
|
---|
| 25 | ; ECXMISS - 1 indicates missing information
|
---|
| 26 | ; ECXGOOD - 0 indicates record should not be extracted
|
---|
| 27 | ;
|
---|
| 28 | N ECXGOOD,ECXMISS
|
---|
| 29 | S (ECXRCST,ECXRQST)="",ECXGOOD=1,ECXSTAT2=$P(ECXN0,U,10)
|
---|
| 30 | I ECXSTAT2]"" D
|
---|
| 31 | .K ECXDIC
|
---|
| 32 | .S DA=ECXSTAT2,DIC="^DIC(4,",DIQ(0)="I",DIQ="ECXDIC",DR=".01;99"
|
---|
| 33 | .D EN^DIQ1 S ECXSTAT2=$G(ECXDIC(4,DA,99,"I")) K DIC,DIQ,DA,DR,ECXDIC
|
---|
| 34 | .S:(ECINST'=$E(ECXSTAT2,1,3)) ECXGOOD=0 ;*Screen for incorrect Station
|
---|
| 35 | ;
|
---|
| 36 | ;** Screen out records
|
---|
| 37 | S:($P(ECXN0,U,17)'="") ECXGOOD=0 ;*SHIP/DEL is not NULL
|
---|
| 38 | S:($P(ECXN0,U,26)'="") ECXGOOD=0 ;*PICKUP/DEL is not NULL
|
---|
| 39 | S:(+($P($G(^RMPR(660,ECXPIEN,"AM")),U,2))=1) ECXGOOD=0 ;*NO ADMIN CT=1
|
---|
| 40 | S:(($P(ECXN0,U,15))'="") ECXGOOD=0 ;*HISTORICAL DATA is not NULL
|
---|
| 41 | ;
|
---|
| 42 | S ECXDATE=$P(ECXN0,U,12),ECXTYPE=$P(ECXN0,U,4),ECXSRCE=$P(ECXN0,U,14)
|
---|
| 43 | S ECXHCPCS=$P($G(^ICPT(+$P(ECXN0,U,22),0)),U,1),ECXCMOD=""
|
---|
| 44 | S ECXHCPCS=$$CPT^ECXUTL3(ECXHCPCS,ECXCMOD)
|
---|
| 45 | ;get psas hcpcs code from file #661.1
|
---|
| 46 | S ECXPHCPC=$P($G(^RMPR(660,ECXPIEN,1)),U,4) D
|
---|
| 47 | .;I +ECXPHCPC S ECXPHCPC=$P($G(^RMPR(661.1,ECXPHCPC,0)),U,1)
|
---|
| 48 | .I +ECXPHCPC S ECXPHCPC=$E($P($G(^RMPR(661.1,ECXPHCPC,0)),U,1),1,5)
|
---|
| 49 | .I ECXPHCPC="UNKNOWN" S ECXPHCPC=$E(ECXHCPCS,1,5)
|
---|
| 50 | ;
|
---|
| 51 | ;* Get Requesting Station Number
|
---|
| 52 | I ECXFORM["-3" D
|
---|
| 53 | .S ECXRQST=$P(ECXNLB,U,1)
|
---|
| 54 | .I ECXRQST]"" D
|
---|
| 55 | ..S DA=ECXRQST,DIC="^DIC(4,",DIQ(0)="I",DIQ="ECXDIC",DR=".01;99"
|
---|
| 56 | ..D EN^DIQ1 S ECXRQST=$G(ECXDIC(4,DA,99,"I")) K DIC,DIQ,DA,DR,ECXDIC
|
---|
| 57 | S:(ECXFORM'["-3") ECXRQST=""
|
---|
| 58 | ;
|
---|
| 59 | ;* Screen out records
|
---|
| 60 | S:(+$P(ECXFORM,U,2)=13) ECXGOOD=0 ;*FORM REQUESTED ON = 13
|
---|
| 61 | ;
|
---|
| 62 | ;* Get Receiving Station Number
|
---|
| 63 | I ECXFORM["-3" D
|
---|
| 64 | .S ECXRCST=$P(ECXNLB,U,4)
|
---|
| 65 | .I ECXRCST]"" D
|
---|
| 66 | ..S DA=ECXRCST,DIC="^DIC(4,",DIQ(0)="I",DIQ="ECXDIC",DR=".01;99"
|
---|
| 67 | ..D EN^DIQ1 S ECXRCST=$G(ECXDIC(4,DA,99,"I")) K DIC,DIQ,DA,DR,ECXDIC
|
---|
| 68 | S:(ECXFORM'["-3") ECXRCST=""
|
---|
| 69 | ;
|
---|
| 70 | ;** Check for integrity and set up the problem variable if right DIV
|
---|
| 71 | I ECXGOOD D CHK
|
---|
| 72 | Q ECXGOOD
|
---|
| 73 | ;
|
---|
| 74 | CHK ;*Check variables
|
---|
| 75 | ; Input
|
---|
| 76 | ; Variables set in and Output from NTEG^ECXPRO1
|
---|
| 77 | ; Output
|
---|
| 78 | ; ^TMP("ECX-PRO EXC",$J, - Global of records with integrity problems
|
---|
| 79 | ;
|
---|
| 80 | S ECXMISS=""
|
---|
| 81 | I ECXSTAT2']"" S ECXMISS=ECXMISS_"1"
|
---|
| 82 | S ECXMISS=ECXMISS_U
|
---|
| 83 | I ECXDFN=0 S ECXMISS=ECXMISS_"1"
|
---|
| 84 | S ECXMISS=ECXMISS_U
|
---|
| 85 | ;I ECXSSN']"" S ECXMISS=ECXMISS_"1"
|
---|
| 86 | S ECXMISS=ECXMISS_U
|
---|
| 87 | ;I ECXNA=" " S ECXMISS=ECXMISS_"1"
|
---|
| 88 | S ECXMISS=ECXMISS_U
|
---|
| 89 | I ECXDATE']"" S ECXMISS=ECXMISS_"1"
|
---|
| 90 | S ECXMISS=ECXMISS_U
|
---|
| 91 | I ECXTYPE']"" S ECXMISS=ECXMISS_"1"
|
---|
| 92 | S ECXMISS=ECXMISS_U
|
---|
| 93 | I ECXSRCE']"" S ECXMISS=ECXMISS_"1"
|
---|
| 94 | S ECXMISS=ECXMISS_U
|
---|
| 95 | I ECXHCPCS']"" S ECXMISS=ECXMISS_"1"
|
---|
| 96 | S ECXMISS=ECXMISS_U
|
---|
| 97 | I ECXFORM["-3" D
|
---|
| 98 | .I ECXRQST']"" S ECXMISS=ECXMISS_"1"
|
---|
| 99 | S ECXMISS=ECXMISS_U
|
---|
| 100 | I ECXFORM']"" S ECXMISS=ECXMISS_"1"
|
---|
| 101 | S ECXMISS=ECXMISS_U
|
---|
| 102 | I ECXFORM["-3" D
|
---|
| 103 | .I ECXRCST']"" S ECXMISS=ECXMISS_"1"
|
---|
| 104 | I ECXMISS'="^^^^^^^^^^" D
|
---|
| 105 | .S ECXGOOD=0
|
---|
| 106 | .D ECXMISLN^ECXPRO2(ECXMISS,.ECXLNE,ECXPIEN)
|
---|
| 107 | Q
|
---|
| 108 | ;
|
---|
| 109 | PROSINFO(ECXDA,ECXLB,ECX0,ECXFORM) ;*Get Prosthetics Information
|
---|
| 110 | ;
|
---|
| 111 | ; Input
|
---|
| 112 | ; ECDA - The IEN for the Prosthetics record
|
---|
| 113 | ; ECX0 - The zero node of the Prosthetics record
|
---|
| 114 | ; ECXLB - The LB node of the Prosthetics record
|
---|
| 115 | ; ECXFORM - The Form Requested On (to determine Lab transactions)
|
---|
| 116 | ;
|
---|
| 117 | ; Output (to be KILLed by calling routine)
|
---|
| 118 | ; ECXCTAMT - The Cost of Transaction
|
---|
| 119 | ; ECXLLC - The Lab Labor Cost
|
---|
| 120 | ; ECXLMC - The Lab Material Cost
|
---|
| 121 | ; ECXGRPR - The AMIS Grouper number
|
---|
| 122 | ; ECXBILST - The Billing Status
|
---|
| 123 | ; ECXQTY - The Quantity
|
---|
| 124 | ;
|
---|
| 125 | S (ECXLLC,ECXLMC,ECXCTAMT)="",ECXBILST=$P($G(^RMPR(660,ECXDA,"AM")),U,3)
|
---|
| 126 | S ECXQTY=$P(ECX0,U,7)
|
---|
| 127 | S:(+ECXQTY=0) ECXQTY=1
|
---|
| 128 | ;
|
---|
| 129 | ;- Set Quantity field to 8 chars (right-justified & padded w/zeros)
|
---|
| 130 | S ECXQTY=$$RJ^XLFSTR(ECXQTY,8,0)
|
---|
| 131 | S ECXGRPR=$P($G(^RMPR(660,ECXDA,"AMS")),U,1),ECXCTAMT=$P(ECX0,U,16)
|
---|
| 132 | I ECXFORM["-3" D
|
---|
| 133 | .S ECXCTAMT=$P(ECXLB,U,9),ECXLLC=$P(ECXLB,U,7),ECXLMC=$P(ECXLB,U,8)
|
---|
| 134 | ;
|
---|
| 135 | ;- If Stock Issue or Inventory Issue, Cost of Transaction=0
|
---|
| 136 | I $P(ECXFORM,U,2)=11!($P(ECXFORM,U,2)=12) S ECXCTAMT=0
|
---|
| 137 | S:ECXCTAMT="" ECXCTAMT=0 S:ECXCTAMT>999999 ECXCTAMT=999999
|
---|
| 138 | S:ECXLLC="" ECXLLC=0 S:ECXLLC>999999 ECXLLC=999999
|
---|
| 139 | S:ECXLMC="" ECXLMC=0 S:ECXLMC>999999 ECXLMC=999999
|
---|
| 140 | ;
|
---|
| 141 | ;- Round to next dollar amount
|
---|
| 142 | I (ECXCTAMT#1)>.50 S ECXCTAMT=(ECXCTAMT+1)\1
|
---|
| 143 | I (ECXLLC#1)>.50 S ECXLLC=(ECXLLC+1)\1
|
---|
| 144 | I (ECXLMC#1)>.50 S ECXLMC=(ECXLMC+1)\1
|
---|
| 145 | Q
|
---|