| 1 | SRHLQRY ;B'HAM ISC/DLR - Surgery Interface Receiver of SQM Message ; [ 05/06/98   7:14 AM ] | 
|---|
| 2 | ;;3.0; Surgery ;**41**;24 Jun 93 | 
|---|
| 3 | ; Per VHA Directive 10-93-142, this routine SHOULD NOT be modified. | 
|---|
| 4 | ;This routine processes incoming Schedule Query messages for surgery cases | 
|---|
| 5 | N DFN,HLCOMP,HLREP,HLSUB,II,MSG,SG,SRAC,SRDT,SRERR,TYPE | 
|---|
| 6 | K ^TMP("HLA",$J),HLMID | 
|---|
| 7 | QUERY N I,J,X F I=1:1 X HLNEXT Q:HLQUIT'>0  S X(I)=HLNODE,J=0,SG=$E(X(I),1,3) D  S MSG=X(I) D PICK | 
|---|
| 8 | .F  S J=$O(HLNODE(J)) Q:'J  S X(I,J)=HLNODE(J) | 
|---|
| 9 | S HLCOMP=$E(HL("ECH"),1),HLREP=$E(HL("ECH"),2),HLSUB=$E(HL("ECH"),4) | 
|---|
| 10 | I $D(SRERR) I $G(SRERR)'["No cases scheduled for date requested" S SRAC="AE",SRERR="" D ERR^SRHLZQR(SRAC,SRERR) | 
|---|
| 11 | I '$D(SRDT) S SRAC="AR",SRERR="Invalid or Missing QRF segment",SRERR="" D ERR^SRHLZQR(SRAC,SRERR) | 
|---|
| 12 | I '$D(DFN) S SRAC="AR",SRERR="Invalid or Missing QRD segment",SRERR="" D ERR^SRHLZQR(SRAC,SRERR) | 
|---|
| 13 | D ZQR^SRHLZQR(DFN,SRDT) | 
|---|
| 14 | EXIT ;Kill variables and quit. | 
|---|
| 15 | I $D(SRERR) S HLP("ERRTEXT")=SRERR | 
|---|
| 16 | ;setup message for the outbound query acknowledgment | 
|---|
| 17 | ;S HLEID=HL("EID"),HLEIDS=HL("EIDS"),HLARYTYP="GM",HLFORMAT=1,HLRESLTA="",HLMTIENA="",HLP="" | 
|---|
| 18 | ;D GENACK^HLMA1(HL("EID"),HLMID,HL("EIDS"),"GM",1,.HLRESLTA,.MTIEN) | 
|---|
| 19 | D GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"GM",1,.HLRESLTA) | 
|---|
| 20 | Q | 
|---|
| 21 | ; | 
|---|
| 22 | PICK ;For each segment found in the message, process the segment module. | 
|---|
| 23 | I $T(@SG)]"" D @SG | 
|---|
| 24 | I $T(@SG)="" Q | 
|---|
| 25 | Q | 
|---|
| 26 | MSH ;;MSH | 
|---|
| 27 | ;Process the MSH segment. | 
|---|
| 28 | S (HLFS,HL("FS"))=$E(MSG,4),(HLECH,HL("ECH"))=$E(MSG,5,8) | 
|---|
| 29 | S TYPE=$P(MSG,HL("FS"),9) | 
|---|
| 30 | S HLCOMP=$E(HL("ECH"),1),HLREP=$E(HL("ECH"),2),HLSUB=$E(HL("ECH"),4) | 
|---|
| 31 | S HLQ=HL("Q") | 
|---|
| 32 | Q | 
|---|
| 33 | QRD ;;QRD | 
|---|
| 34 | ;Process QRD segment. | 
|---|
| 35 | N I,WDDC,WSF | 
|---|
| 36 | S DFN="" | 
|---|
| 37 | S WSF=$P(MSG,HL("FS"),9) I WSF'="ALL" S WSF=$$FMNAME^HLFNC(WSF) | 
|---|
| 38 | S WDDC=$P(MSG,HL("FS"),11) | 
|---|
| 39 | I (WSF'="ALL")!(WDDC'="ALL") D | 
|---|
| 40 | .I $D(WDDC) F I=0:0 S I=$O(^DPT("SSN",+WDDC,I)) Q:'I  S DFN=I | 
|---|
| 41 | .I $G(DFN)="" S SRERR="Invalid Patient Name or SSN" | 
|---|
| 42 | .I $G(DFN)'="",$D(WSF) I WSF'=$E($P(^DPT(DFN,0),"^"),1,20) S SRERR="Invalid Patient Name or SSN" | 
|---|
| 43 | .I $G(DFN)'="" S:'$O(^SRF("B",DFN,0)) SRERR="Invalid Patient Name - not found in Surgery application" | 
|---|
| 44 | Q | 
|---|
| 45 | QRF ;;QRF | 
|---|
| 46 | ;Process QRF segment. | 
|---|
| 47 | S SRDT=$$FMDATE^HLFNC($P(MSG,HL("FS"),3)) | 
|---|
| 48 | I '$D(SRDT) S SRERR="Missing request date for surgical cases" | 
|---|
| 49 | Q | 
|---|