| 1 | RMPREXT ;PHX/HNC-DATA EXTRACT FOR Nppd  ;4/20/1995 | 
|---|
| 2 | ;;3.0;PROSTHETICS;**12,18,24,64,59,103,106,109,113,126,138**;Feb 09, 1996;Build 11 | 
|---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | ;DBIA #4599, Vendor file read 38,39,18.3,8.3 | 
|---|
| 6 | ; | 
|---|
| 7 | ;patch 113 - roll back to 5000 lines | 
|---|
| 8 | ;            add count of records to summary message and | 
|---|
| 9 | ;            count by station number to summary total | 
|---|
| 10 | ;            add site- to ien, use ~ as data delimiter | 
|---|
| 11 | ;            add d1 and d2 flags for EXE parsing tool | 
|---|
| 12 | ; | 
|---|
| 13 | ;patch 126/hnc - check length, bug in GUI ignores DD field length | 
|---|
| 14 | ; | 
|---|
| 15 | ;patch 60/hnc - DDC interface, include DDC data fields. | 
|---|
| 16 | ;               8/23/2006 | 
|---|
| 17 | ; | 
|---|
| 18 | EN ;extract from 660 | 
|---|
| 19 | N %ZIS,ZTIO,ZTRTN,ZTSK,ZTDESC | 
|---|
| 20 | S %ZIS="Q" D ^%ZIS Q:POP | 
|---|
| 21 | I $D(IO("Q")) D QUE,HOME^%ZIS Q | 
|---|
| 22 | PR1 ;refresh amis codes | 
|---|
| 23 | D ^RMPREXR | 
|---|
| 24 | EN1 ;pass dates if needed | 
|---|
| 25 | S RMPRSEND=$P(XMRG,"*",5) | 
|---|
| 26 | S DIC="^RMPR(660,",DR=".01:100",DIQ(0)="EN" | 
|---|
| 27 | S RMPRB=0,RMPRCNT=0,RMPRSUB="B1 ",RMPRRECC=0,COUNT=0 | 
|---|
| 28 | K ^TMP("RMPR",$J) | 
|---|
| 29 | F  S RMPRB=$O(^RMPR(660,"B",RMPRB)) Q:(RMPRB>RMPRDT2)!(RMPRB'>0)  D | 
|---|
| 30 | .Q:RMPRB<RMPRDT1 | 
|---|
| 31 | .;date range check complete | 
|---|
| 32 | .;pick up mult records with same date | 
|---|
| 33 | .S RMPRA=0 | 
|---|
| 34 | .F  S RMPRA=$O(^RMPR(660,"B",RMPRB,RMPRA)) Q:RMPRA'>0  D | 
|---|
| 35 | ..S RMPRRECC=RMPRRECC+1 | 
|---|
| 36 | ..S DA=RMPRA,DIQ="RMPR" | 
|---|
| 37 | ..S DIC="^RMPR(660,",DR=".01:100",DIQ(0)="EN" | 
|---|
| 38 | ..D EN^DIQ1 | 
|---|
| 39 | ..;verify field length | 
|---|
| 40 | ..;Brief Description | 
|---|
| 41 | ..I $D(RMPR(660,RMPRA,24,"E")) D | 
|---|
| 42 | ...I $L(RMPR(660,RMPRA,24,"E"))>60 S RMPR(660,RMPRA,24,"E")=$E(RMPR(660,RMPRA,24,"E"),1,60) | 
|---|
| 43 | ..;Deliver To | 
|---|
| 44 | ..I $D(RMPR(660,RMPRA,25,"E")) D | 
|---|
| 45 | ...I $L(RMPR(660,RMPRA,25,"E"))>30 S RMPR(660,RMPRA,25,"E")=$E(RMPR(660,RMPRA,25,"E"),1,30) | 
|---|
| 46 | ..;Remarks | 
|---|
| 47 | ..I $D(RMPR(660,RMPRA,16,"E")) D | 
|---|
| 48 | ...I $L(RMPR(660,RMPRA,16,"E"))>60 S RMPR(660,RMPRA,16,"E")=$E(RMPR(660,RMPRA,16,"E"),1,60) | 
|---|
| 49 | ..D LINECK | 
|---|
| 50 | ..;parse array | 
|---|
| 51 | ..S RMPRC=0 | 
|---|
| 52 | ..F  S RMPRC=$O(RMPR(660,RMPRC)) Q:RMPRC'>0  D TMP | 
|---|
| 53 | ;clean up before calling mailman | 
|---|
| 54 | K DFN,RMPRFLD,RMPRE,RMPRCNT,DFN,RMPRA,RMPRC,DIQ,DIC,DR,DA,RMPRDT1,RMPRDT2 | 
|---|
| 55 | S XMSUB="B1-F " D MAIL,EXIT | 
|---|
| 56 | Q | 
|---|
| 57 | LINECK ;check the message line limit (5000) | 
|---|
| 58 | I RMPRCNT>5000 S XMSUB=RMPRSUB D MAIL K ^TMP("RMPR",$J) S RMPRCNT=0 | 
|---|
| 59 | Q | 
|---|
| 60 | TMP ;format for mailman ^TMP(namespace,$J,counter)=record,field,value | 
|---|
| 61 | S RMPRFLD=0 | 
|---|
| 62 | F  S RMPRFLD=$O(RMPR(660,RMPRC,RMPRFLD)) Q:RMPRFLD'>0  D | 
|---|
| 63 | .S RMPRCNT=RMPRCNT+1,RMPRE=0,DFN=0 | 
|---|
| 64 | .S RMPRE=$O(RMPR(660,RMPRC,RMPRFLD,RMPRE)) Q:RMPRE="" | 
|---|
| 65 | .;add station number - to ien | 
|---|
| 66 | .S IENSITE=$P($$SITE^VASITE,U,3),IENSITE=IENSITE_"-" | 
|---|
| 67 | .;strip the ~ for TEXT file | 
|---|
| 68 | .I RMPRFLD'=".01" S ^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~"_RMPRFLD_"~"_$TR(RMPR(660,RMPRC,RMPRFLD,RMPRE),"~","/")_U | 
|---|
| 69 | .I RMPRFLD=".01" S ^TMP("RMPR",$J,RMPRCNT)="d1~"_IENSITE_RMPRC_"~"_RMPRFLD_"~"_$TR(RMPR(660,RMPRC,RMPRFLD,RMPRE),"~","/")_U | 
|---|
| 70 | .;get SSN | 
|---|
| 71 | .I RMPRFLD=".02" D | 
|---|
| 72 | .  .S DFN=$P(^RMPR(660,RMPRC,0),U,2) | 
|---|
| 73 | .  .D DEM^VADPT,ADD^VADPT,SVC^VADPT | 
|---|
| 74 | .  .S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~644~"_VA("PID")_U | 
|---|
| 75 | .  .;DOB int | 
|---|
| 76 | .  .I $G(VADM(3)) S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.3~"_$P(VADM(3),U,1)_U | 
|---|
| 77 | .  .;DOB ext | 
|---|
| 78 | .  .I $G(VADM(3)) S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.31~"_$P(VADM(3),U,2)_U | 
|---|
| 79 | .  .;Sex, int | 
|---|
| 80 | .  .I $G(VADM(5))'="" S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.5~"_$P(VADM(5),U,1)_U | 
|---|
| 81 | .  .;DOD int | 
|---|
| 82 | .  .I $G(VADM(6)) S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.6~"_$P(VADM(6),U,1)_U | 
|---|
| 83 | .  .;DOD ext | 
|---|
| 84 | .  .I $G(VADM(6)) S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.61~"_$P(VADM(6),U,2)_U | 
|---|
| 85 | .  .;patient zip | 
|---|
| 86 | .  .I $G(VAPA(6)) S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.62~"_VAPA(6)_U | 
|---|
| 87 | .  .;patient county name | 
|---|
| 88 | .  .I $G(VAPA(7)) S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.63~"_$P(VAPA(7),U,2)_U | 
|---|
| 89 | .  .;city | 
|---|
| 90 | .  .I $G(VAPA(4)) S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.66~"_VAPA(4)_U | 
|---|
| 91 | .  .;requestor service | 
|---|
| 92 | .  .;O INDICATOR | 
|---|
| 93 | .  .I $P($G(VASV(11)),U,1)>0 S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.80~"_$P(VASV(11),U,1)_U | 
|---|
| 94 | .  .I $P($G(VASV(12)),U,1)>0 S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.81~"_$P(VASV(12),U,1)_U | 
|---|
| 95 | .  .I $P($G(VASV(13)),U,1)>0 S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.82~"_$P(VASV(13),U,1)_U | 
|---|
| 96 | .  .K VASV | 
|---|
| 97 | .  .; | 
|---|
| 98 | .  .;ICN | 
|---|
| 99 | .  .S ICN=$$GETICN^MPIF001(DFN) | 
|---|
| 100 | .  .I +ICN'=-1 S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.64~"_ICN_U | 
|---|
| 101 | .  .;CMOR | 
|---|
| 102 | .  .S CMOR=$$GETVCCI^MPIF001(DFN) | 
|---|
| 103 | .  .I +CMOR'=-1 S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.65~"_CMOR_U | 
|---|
| 104 | .;vendor info | 
|---|
| 105 | .I RMPRFLD=7 D | 
|---|
| 106 | ..;N DIC,DR,DA | 
|---|
| 107 | ..S DIC="^PRC(440," | 
|---|
| 108 | ..S DA=$P(^RMPR(660,RMPRC,0),U,9) | 
|---|
| 109 | ..Q:+DA'>0 | 
|---|
| 110 | ..S DR="38;39;18.3;8.3",DIQ="TAXID(",DIQ(0)="E" | 
|---|
| 111 | ..D EN^DIQ1 | 
|---|
| 112 | ..S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.738~"_TAXID(440,DA,38,"E")_U | 
|---|
| 113 | ..S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.739~"_TAXID(440,DA,39,"E")_U | 
|---|
| 114 | ..S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.7183~"_TAXID(440,DA,18.3,"E")_U | 
|---|
| 115 | ..S RMPRCNT=RMPRCNT+1,^TMP("RMPR",$J,RMPRCNT)="d2~"_IENSITE_RMPRC_"~664.783~"_TAXID(440,DA,8.3,"E")_U | 
|---|
| 116 | ; | 
|---|
| 117 | K VA("PID"),RMPR,VADM,VAPA,ICN,CMOR,TAXID | 
|---|
| 118 | Q | 
|---|
| 119 | MAIL ;pack it up and send it off | 
|---|
| 120 | S XMTEXT="^TMP(""RMPR"",$J," | 
|---|
| 121 | MAILS ;entry point to send summary msg | 
|---|
| 122 | S XMDUZ=.5 | 
|---|
| 123 | S XMY("G.PROSTHETICS@PSAS.MED.VA.GOV")="" | 
|---|
| 124 | S XMSUB=XMSUB_" Extract From "_$P($$SITE^VASITE,U,2) | 
|---|
| 125 | D ^XMD | 
|---|
| 126 | ;keep track of messages sent | 
|---|
| 127 | S RMPRM(XMZ)=XMZ_U | 
|---|
| 128 | S COUNT=COUNT+1 | 
|---|
| 129 | Q | 
|---|
| 130 | QUE ;TaskMan Queue | 
|---|
| 131 | S ZTIO=ION_";"_IOST K IO("Q") | 
|---|
| 132 | S ZTRTN="PR1^RMPREXT" | 
|---|
| 133 | S ZTDESC="Prosthetics National Data Extract" | 
|---|
| 134 | K ZTSK D ^%ZTLOAD I $G(ZTSK) U IO(0) W !,"<REQUEST QUEUED>" | 
|---|
| 135 | Q | 
|---|
| 136 | EXIT ;exit point | 
|---|
| 137 | ;send summary msg | 
|---|
| 138 | S RMPRM(1)="Message Numbers Created Below, Site^Total Record #:"_U_$P($$SITE^VASITE,U,3)_U_$P($$SITE^VASITE,U,2)_U_RMPRRECC_U | 
|---|
| 139 | S XMSUB=RMPRSUB_"Summary ",XMTEXT="RMPRM(" | 
|---|
| 140 | D MAILS | 
|---|
| 141 | K ^TMP("RMPR",$J),XMTEXT,XMDUZ,XMY,XMSUB,RMPRM | 
|---|
| 142 | ;send message to PCM group to let them know Austin should have all mail. | 
|---|
| 143 | S RMPRMM(1)="Site^Total Record # ^ Total Message #:"_U_$P($$SITE^VASITE,U,3)_U_$P($$SITE^VASITE,U,2)_U_RMPRRECC_U_COUNT | 
|---|
| 144 | S XMTEXT="RMPRMM(" | 
|---|
| 145 | S XMSUB="NPPD Summary Update From "_$P($$SITE^VASITE,U,2) | 
|---|
| 146 | S XMY("VHACOPSASPIPReport@med.va.gov")="" | 
|---|
| 147 | S XMDUZ=.5 | 
|---|
| 148 | D ^XMD | 
|---|
| 149 | K XMTEXT,XMDUZ,XMY,XMSUB,RMPRRECC,COUNT,RMPRMM,RMPRSEND,IENSITE | 
|---|
| 150 | Q | 
|---|
| 151 | ; | 
|---|
| 152 | PR2 ;Bundle open obligations on 2319 | 
|---|
| 153 | S XMDUZ=.5 | 
|---|
| 154 | S XMY("G.RMPR SERVER")="" | 
|---|
| 155 | S XMSUB="Prosthetics Data Extract Open Obligations" | 
|---|
| 156 | S RMPRMSG(1)="The National Data Server has been activated today by Prosthetics HQ." | 
|---|
| 157 | S RMPRMSG(2)="Data has been collected for all open obligations." | 
|---|
| 158 | S RMPRMSG(3)="" | 
|---|
| 159 | S RMPRMSG(4)="This was activated by "_$P(XMFROM,"@",1) | 
|---|
| 160 | S RMPRMSG(5)="" | 
|---|
| 161 | S XMTEXT="RMPRMSG(" | 
|---|
| 162 | D ^XMD | 
|---|
| 163 | K RMPRMSG | 
|---|
| 164 | K ^TMP("RMPR",$J) | 
|---|
| 165 | S RMPRB=0,RMPRCNT=0,RMPRSUB="B2 " | 
|---|
| 166 | S DIC="^RMPR(660,",DR=".01:83",DIQ(0)="EN" | 
|---|
| 167 | F  S RMPRB=$O(^RMPR(660,RMPRB)) Q:RMPRB'>0  D | 
|---|
| 168 | .I $G(^RMPR(660,RMPRB,0))="" Q | 
|---|
| 169 | .S RMPRA=^RMPR(660,RMPRB,0) | 
|---|
| 170 | .;delivery date not null | 
|---|
| 171 | .Q:$P(RMPRA,U,12)'="" | 
|---|
| 172 | .S RMPRX=$P($G(^RMPR(660,RMPRB,1)),U,1) | 
|---|
| 173 | .;has an IFCAP transaction number | 
|---|
| 174 | .Q:$P(RMPRX,U,1)="" | 
|---|
| 175 | .;refresh amis data | 
|---|
| 176 | .D | 
|---|
| 177 | ..N ITM,TYPE,NEW,REPAIR | 
|---|
| 178 | ..S ITM=$P(RMPRA,U,6),TYPE=$P(RMPRA,U,4) | 
|---|
| 179 | ..Q:ITM="" | 
|---|
| 180 | ..Q:TYPE="" | 
|---|
| 181 | ..S NEW=$P($G(^RMPR(661,ITM,0)),U,3) | 
|---|
| 182 | ..S REPAIR=$P($G(^RMPR(661,ITM,0)),U,4) | 
|---|
| 183 | ..I TYPE="X" S $P(^RMPR(660,RMPRB,"AM"),U,5)=REPAIR,$P(^("AM"),U,9)="" Q | 
|---|
| 184 | ..S $P(^RMPR(660,RMPRB,"AM"),U,9)=NEW,$P(^("AM"),U,5)="" | 
|---|
| 185 | .;get data | 
|---|
| 186 | .S DA=RMPRB,DIQ="RMPR" D EN^DIQ1,LINECK | 
|---|
| 187 | .S RMPRC=0 | 
|---|
| 188 | .F  S RMPRC=$O(RMPR(660,RMPRC)) Q:RMPRC'>0  D LINECK,TMP | 
|---|
| 189 | K DFN,RMPRFLD,RMPRC,RMPRA,RMPRB,RMPRX,RMPRCNT,RMPRE,DR,DIC,DIQ,DA | 
|---|
| 190 | S XMSUB="B2-F " D MAIL,EXIT | 
|---|
| 191 | D ^%ZISC | 
|---|
| 192 | Q | 
|---|
| 193 | ;END | 
|---|