| 1 | RCXVACK ;DAOU/ALA-AR Data Extraction HL7 Query/ACK ;28-JUL-03 | 
|---|
| 2 | ;;4.5;Accounts Receivable;**201**;Mar 20, 1995 | 
|---|
| 3 | ; | 
|---|
| 4 | ;** Program Description ** | 
|---|
| 5 | ;  This program will handle an acknowledgment message | 
|---|
| 6 | ;  from either Vitria or Boston Allocation Resource | 
|---|
| 7 | ;  Center | 
|---|
| 8 | ; | 
|---|
| 9 | EN ;  Entry point | 
|---|
| 10 | ; | 
|---|
| 11 | ;  Load the HL7 message into temporary global | 
|---|
| 12 | K ^TMP($J,"RCXVACK") | 
|---|
| 13 | F SEGCNT=1:1 X HLNEXT Q:HLQUIT'>0  D | 
|---|
| 14 | . S CNT=0 | 
|---|
| 15 | . S ^TMP($J,"RCXVACK",SEGCNT,CNT)=HLNODE | 
|---|
| 16 | . F  S CNT=$O(HLNODE(CNT)) Q:'CNT  D | 
|---|
| 17 | .. S ^TMP($J,"RCXVACK",SEGCNT,CNT)=HLNODE(CNT) | 
|---|
| 18 | ; | 
|---|
| 19 | S SEGMT=$G(^TMP($J,"RCXVACK",1,0)) | 
|---|
| 20 | I $E(SEGMT,1,3)'="MSH" S MSG(1)="MSH Segment is not the first segment found" D ERR G EXIT | 
|---|
| 21 | S HLFS=$E(SEGMT,4) | 
|---|
| 22 | S RCI=0,QRY=0,ACK=0 | 
|---|
| 23 | F  S RCI=$O(^TMP($J,"RCXVACK",RCI)) Q:'RCI  D  Q:ACK | 
|---|
| 24 | . I $P(^TMP($J,"RCXVACK",RCI,0),HLFS,1)="MSA" S ACK=1 D ACK Q | 
|---|
| 25 | . ; | 
|---|
| 26 | . I $P(^TMP($J,"RCXVACK",RCI,0),HLFS,1)="QRD" D QRY | 
|---|
| 27 | ; | 
|---|
| 28 | EXIT K RCI,ACK,QRY,NDAYS,FDATE,RCXSEG,RREFR,RN,RCXVDA,DTMRCD,RCXVBTN,HLFS | 
|---|
| 29 | K RCVXDSC,RTASKS,ZTDESC,ZTRTN,ZTDTH,RREFR,RCXVFFD,RCXVFTD,CURDT,CDOW | 
|---|
| 30 | K HL,HLNEXT,HLNODE,HLQUIT,MSG,RCXVUPD,SEGCNT,SEGMT | 
|---|
| 31 | K ^TMP("RCXVA",$J),^TMP($J,"RCXVACK") | 
|---|
| 32 | Q | 
|---|
| 33 | ; | 
|---|
| 34 | ERR ; | 
|---|
| 35 | Q | 
|---|
| 36 | ; | 
|---|
| 37 | ACK ;  Set Acknowledgement | 
|---|
| 38 | S RCI=$O(^TMP($J,"RCXVACK",RCI)) Q:'RCI | 
|---|
| 39 | I $P(^TMP($J,"RCXVACK",RCI,0),HLFS,1)'="QRD" G ACK | 
|---|
| 40 | S RREFR="^TMP($J,""RCXVACK"",RCI)" | 
|---|
| 41 | D SPAR^RCXVUTIL(RREFR) | 
|---|
| 42 | ; | 
|---|
| 43 | S DTMRCD=$G(RCXSEG(2)),RCXVBTN=$G(RCXSEG(5)) | 
|---|
| 44 | ; | 
|---|
| 45 | K ^TMP("RCXVA",$J) | 
|---|
| 46 | D FIND^DIC(348.4,"","","P",RCXVBTN,"","B","","","^TMP(""RCXVA"",$J)") | 
|---|
| 47 | S RN=$P($G(^TMP("RCXVA",$J,"DILIST",0)),U,1) | 
|---|
| 48 | I RN=0 Q | 
|---|
| 49 | S RCXVDA=$P($G(^TMP("RCXVA",$J,"DILIST",RN,0)),U,1) | 
|---|
| 50 | S RCXVUPD(348.4,RCXVDA_",",.08)=$$FMDATE^HLFNC(DTMRCD) | 
|---|
| 51 | S RCXVUPD(348.4,RCXVDA_",",.03)="C" | 
|---|
| 52 | D FILE^DIE("I","RCXVUPD","RCXVERR") | 
|---|
| 53 | Q | 
|---|
| 54 | ; | 
|---|
| 55 | QRY ;  Process Query | 
|---|
| 56 | S RREFR="^TMP($J,""RCXVACK"",RCI)" | 
|---|
| 57 | D SPAR^RCXVUTIL(RREFR) | 
|---|
| 58 | ; | 
|---|
| 59 | S RCXVFFD=$P($G(RCXSEG(12)),U,1),RCXVFTD=$P($G(RCXSEG(12)),U,2) | 
|---|
| 60 | S RCXVFFD=$$FMDATE^HLFNC(RCXVFFD) | 
|---|
| 61 | S RCXVFTD=$$FMDATE^HLFNC(RCXVFTD) | 
|---|
| 62 | ; | 
|---|
| 63 | ;  Get the next Saturday date | 
|---|
| 64 | S CURDT=$$DT^XLFDT() | 
|---|
| 65 | S CDOW=$$DOW^XLFDT(CURDT,1),NDAYS=6-CDOW | 
|---|
| 66 | S FDATE=$$FMADD^XLFDT(CURDT,NDAYS) | 
|---|
| 67 | ; | 
|---|
| 68 | S RCVXDSC="REQUESTED CBO HISTORICAL EXTRACT" | 
|---|
| 69 | S ZTDESC=RCVXDSC,ZTRTN="HIS^RCXVTSK",ZTIO="" | 
|---|
| 70 | S ZTSAVE("RCXVFTD")="",ZTSAVE("RCXVFFD")="" | 
|---|
| 71 | S ZTDTH=FDATE_".06" | 
|---|
| 72 | D ^%ZTLOAD | 
|---|
| 73 | Q | 
|---|