| 1 | AFJXTRF ;FO-OAKLAND/GMB-AFJXALRT (cont'd) ;2/13/01  14:59 | 
|---|
| 2 | ;;5.1;Network Health Exchange;**17,18,23,26,31**;Jan 23, 1996 | 
|---|
| 3 | ; Totally rewritten 11/2001.  (Previously AAA.) | 
|---|
| 4 | SPL2TMP ; Transfer the lines from the spool document to the temp global | 
|---|
| 5 | ; Incoming: AXPID,AXTI,AXSPDOC,AXSPDATA,AXRQFROM | 
|---|
| 6 | D CHKDATA(AXSPDATA,.AXPID) Q:AXABORT | 
|---|
| 7 | N AXSPI,AXDREC | 
|---|
| 8 | S AXSPI=0 | 
|---|
| 9 | S AXTI=AXTI+1,^TMP("AFJX",$J,AXTI,0)="-Patient ID verified on all data segments-" | 
|---|
| 10 | S AXTI=AXTI+1,^TMP("AFJX",$J,AXTI,0)="" | 
|---|
| 11 | F  D  Q:'AXSPI  ; Transfer one segment at a time | 
|---|
| 12 | . F  S AXSPI=$O(^XMBS(3.519,AXSPDATA,2,AXSPI)) Q:'AXSPI  S AXDREC=^(AXSPI,0) Q:$E(AXDREC,1,3)="---"!(AXDREC["*** DECEASED ***") | 
|---|
| 13 | . Q:'AXSPI | 
|---|
| 14 | . S AXTI=AXTI+1,^TMP("AFJX",$J,AXTI,0)=AXPID("INFO") | 
|---|
| 15 | . I AXDREC["(max 365 days) " S AXDREC=$P(AXDREC,"(max 365 days) ")_"(12 months) ---"_$P(AXDREC,"(max 365 days) ",2) | 
|---|
| 16 | . S AXTI=AXTI+1,^TMP("AFJX",$J,AXTI,0)=AXDREC | 
|---|
| 17 | . F  S AXSPI=$O(^XMBS(3.519,AXSPDATA,2,AXSPI)) Q:'AXSPI  S AXDREC=^(AXSPI,0) Q:$E(AXDREC,1,7)="*** END"  D | 
|---|
| 18 | . . S AXDREC=$G(^XMBS(3.519,AXSPDATA,2,AXSPI,0)) | 
|---|
| 19 | . . Q:AXDREC["|TOP|"!(AXDREC["(continued)") | 
|---|
| 20 | . . S AXTI=AXTI+1,^TMP("AFJX",$J,AXTI,0)=AXDREC | 
|---|
| 21 | Q:'$P($G(^XMB(3.51,AXSPDOC,0)),U,11) | 
|---|
| 22 | S AXTI=AXTI+1,^TMP("AFJX",$J,AXTI,0)="*** Data is incomplete ***" | 
|---|
| 23 | Q | 
|---|
| 24 | CHKDATA(AXSPDATA,AXPID) ; Patient ID Filter | 
|---|
| 25 | N AXSPI,AXBAD,AXDREC,I | 
|---|
| 26 | S AXSPI=0 | 
|---|
| 27 | F  S AXSPI=$O(^XMBS(3.519,AXSPDATA,2,AXSPI)) Q:'AXSPI  S AXDREC=^(AXSPI,0) D | 
|---|
| 28 | . Q:AXDREC'["NHE EXTRACT SUMMARY"!(AXDREC["END ") | 
|---|
| 29 | . F I=1:1:5,0 Q:$L($G(^XMBS(3.519,AXSPDATA,2,AXSPI+I,0))) | 
|---|
| 30 | . Q:'I | 
|---|
| 31 | . S AXDREC=$G(^XMBS(3.519,AXSPDATA,2,AXSPI+I,0)) | 
|---|
| 32 | . I '$$VALID(AXDREC,.AXPID) S AXBAD(AXDREC)="" ; Wrong Patient Data | 
|---|
| 33 | Q:'$D(AXBAD) | 
|---|
| 34 | D FAIL^AFJXALRT("Health Summary returned data for the wrong patient.  Please try again.") | 
|---|
| 35 | D BADMSG(.AXPID,.AXBAD) | 
|---|
| 36 | Q | 
|---|
| 37 | VALID(AXDREC,AXPID) ; Make sure we've got the right patient. | 
|---|
| 38 | ; AXDREC         - Patient ID line from health summary. | 
|---|
| 39 | ; AXPID("NAME")  - Patient Name | 
|---|
| 40 | ; AXPID("S-S-N") - Patient SSN | 
|---|
| 41 | ; AXPID("DOB")   - Patient Date of Birth | 
|---|
| 42 | ; If AXDREC contains all three Patient ID's then AXFLD will equal zero. | 
|---|
| 43 | N AXFLD | 
|---|
| 44 | F AXFLD="NAME","S-S-N","DOB",0 Q:AXFLD=0  I $L($G(AXPID(AXFLD))),$L(AXDREC),AXDREC'[AXPID(AXFLD) Q | 
|---|
| 45 | Q AXFLD=0 | 
|---|
| 46 | BADMSG(AXPID,AXBAD) ; Send message if PatID Filter Blocked a Data Request. | 
|---|
| 47 | ; Make sure AFJX PATID FILTER BLOCK mail group exists and has members | 
|---|
| 48 | Q:'$$GOTLOCAL^XMXAPIG("AFJX PATID FILTER BLOCK") | 
|---|
| 49 | N I,AXTEXT,XMSUB,XMTEXT,XMY,XMZ,AXDREC | 
|---|
| 50 | S XMSUB="NHE PatID Filter Warning ("_AXPID("NAME")_")" | 
|---|
| 51 | S XMY("G.AFJX PATID FILTER BLOCK")="" | 
|---|
| 52 | S XMTEXT="AXTEXT(" | 
|---|
| 53 | S AXTEXT(1)=$$REPEAT^XLFSTR("*",69) | 
|---|
| 54 | S AXTEXT(2)="NHE Data Request blocked by possible invalid Health Summary data." | 
|---|
| 55 | S AXTEXT(3)="Requested by: "_$G(AXRQFROM,"Unknown user") | 
|---|
| 56 | S AXTEXT(4)=$$REPEAT^XLFSTR("*",69) | 
|---|
| 57 | S AXTEXT(5)="" | 
|---|
| 58 | S AXTEXT(6)="Data Requested on Patient:" | 
|---|
| 59 | S AXTEXT(7)=AXPID("INFO") | 
|---|
| 60 | S AXTEXT(8)="" | 
|---|
| 61 | S AXTEXT(9)="Patients Returned by Health Summary:" | 
|---|
| 62 | S AXTEXT(10)="" | 
|---|
| 63 | S I=10 | 
|---|
| 64 | S AXDREC="" | 
|---|
| 65 | F  S AXDREC=$O(AXBAD(AXDREC)) Q:AXDREC=""  S I=I+1,AXTEXT(I)=AXDREC | 
|---|
| 66 | D ^XMD | 
|---|
| 67 | Q | 
|---|