| 1 | IBDFRPC5 ;ALB/AAS - AICS Pass data to PCE, Broker Call ; 24-FEB-96 | 
|---|
| 2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;**3,38**;APR 24, 1997 | 
|---|
| 3 | ; | 
|---|
| 4 | GETALL(RESULT,IBDATA) ; -- called by RPC and by write | 
|---|
| 5 | ; -- get all encounter data | 
|---|
| 6 | ; -- input  Result (called by reference) | 
|---|
| 7 | ;           IBDATA (called by reference) | 
|---|
| 8 | ;           IBDATA("CLINIC")   := pointer to hospital location file (44) | 
|---|
| 9 | ;           IBDATA("DFN")      := pointer to Patient file (2) | 
|---|
| 10 | ;           IBDATA("APPT")     := date/time of encounter in FM format | 
|---|
| 11 | ;           IBDATA("UNFORMAT") := (optional, default :=0) return piece | 
|---|
| 12 | ;                                  as displayable | 
|---|
| 13 | ; -- output Results Array | 
|---|
| 14 | ;           A sequential array of all data found for encounters for | 
|---|
| 15 | ;             patient/clinic/appt | 
|---|
| 16 | ;           if ibdata(unformat) is false then data is preformatted | 
|---|
| 17 | ;              suitable for display to a crt. | 
|---|
| 18 | ;           if ibdata(unformat) is true then a record as follows: | 
|---|
| 19 | ;              P1  :=  data qualifier (ie primary or secondary) | 
|---|
| 20 | ;              P2  :=  type of data | 
|---|
| 21 | ;              p3  :=  Narrative or Description (Textual name) | 
|---|
| 22 | ;              P4  :=  value (code or date/time) | 
|---|
| 23 | ;              P5  :=  source of data (aics, pce, scheduling) | 
|---|
| 24 | ;              P6  :=  Quantity (cpt codes only) | 
|---|
| 25 | ;                      The next 4 pieces only set if answered | 
|---|
| 26 | ;              P7  :=  sc (null, 1 or 0) encounter node only | 
|---|
| 27 | ;              P8  :=  ao (null, 1 or 0) encounter node only | 
|---|
| 28 | ;              P9  :=  ir (null, 1 or 0) encounter node only | 
|---|
| 29 | ;              P10 :=  ec (null, 1 or 0) encounter node only | 
|---|
| 30 | ; | 
|---|
| 31 | N CNT,IBDI,ENCTRS,L | 
|---|
| 32 | S CNT=0,ENCTRS="" | 
|---|
| 33 | D GETDATA(.RESULT,.IBDATA,.ENCTRS) | 
|---|
| 34 | S L="                             " | 
|---|
| 35 | I +RESULT(0) S RESULT(0)="The following data was found: " D FINDALL^IBDFRPC6(.RESULT) | 
|---|
| 36 | ;F IBDI="VST","PRV","POV","CPT","HF","PED","XAM","SK","IMM","TRT" D @(IBDI_"^IBDFRPC6") | 
|---|
| 37 | GETALLQ Q | 
|---|
| 38 | ; | 
|---|
| 39 | GETDATA(RESULT,IBDATA,ENCTRS) ; -- return all data for an encounter date time | 
|---|
| 40 | ; | 
|---|
| 41 | N IBDJ,IBDY | 
|---|
| 42 | K ^TMP("PXKENC",$J) | 
|---|
| 43 | I +IBDATA("CLINIC")'=IBDATA("CLINIC"),IBDATA("CLINIC")'="" S IBDATA("CLINIC")=$O(^SC("B",IBDATA("CLINIC"),0)) | 
|---|
| 44 | S RESULT(0)="Nothing Processed, Perhaps an Error Occurred" | 
|---|
| 45 | I $G(IBDATA("DFN"))<1!($G(IBDATA("APPT"))<1)!($G(IBDATA("CLINIC"))<1) S RESULT(0)="Insufficient Data Passed to find encounter data" G GETQ | 
|---|
| 46 | ; | 
|---|
| 47 | ; -- first get visit iens | 
|---|
| 48 | S ENCTRS=$$GETENC^PXAPI(IBDATA("DFN"),IBDATA("APPT"),IBDATA("CLINIC")) | 
|---|
| 49 | I ENCTRS=-1 S RESULT(0)="No encounter Data on file." G GETQ | 
|---|
| 50 | I ENCTRS=-2 S RESULT(0)="Error in calling routine, file a NOIS" G GETQ | 
|---|
| 51 | ; | 
|---|
| 52 | ; -- then get all visit data | 
|---|
| 53 | S RESULT(0)="Attempting to Retieve Data" | 
|---|
| 54 | F IBDJ=1:1 S IBDY=$P(ENCTRS,"^",IBDJ) Q:IBDY=""  D ENCEVENT^PXAPI(IBDY,1) | 
|---|
| 55 | ; | 
|---|
| 56 | S RESULT(0)="1" | 
|---|
| 57 | GETQ Q | 
|---|
| 58 | ; | 
|---|
| 59 | WRITE ; -- called by DIR as executable help from IBDFDE | 
|---|
| 60 | N RESULT,IBQUIT,I,CNT | 
|---|
| 61 | W !,"Retrieving Encounter Data from PCE..." | 
|---|
| 62 | D GETALL(.RESULT,.IBDF) | 
|---|
| 63 | W ! | 
|---|
| 64 | S I="",IBQUIT=0,CNT=0 | 
|---|
| 65 | F  S I=$O(RESULT(I)) Q:I=""  S CNT=CNT+1 D:'(CNT#10) PAUSE^IBDFDE Q:IBQUIT  W !,RESULT(I) | 
|---|
| 66 | Q | 
|---|
| 67 | ; | 
|---|
| 68 | APPTLST(RESULT,IBDF) ; -- return past appointment list, called by rpc | 
|---|
| 69 | N I,J,CNT,DFN,VASD,VAERR,VAROOT | 
|---|
| 70 | S RESULT(0)="No Past Appointments Found^^" | 
|---|
| 71 | K ^UTILITY("VASD",$J) | 
|---|
| 72 | ; | 
|---|
| 73 | S DFN=+$G(IBDF("DFN")) | 
|---|
| 74 | S VASD("F")=$S($G(IBDF("F"))>2840000:IBDF("F"),1:DT-10000) | 
|---|
| 75 | S VASD("T")=$S($G(IBDF("T"))>2840000:IBDF("T"),1:DT+.24) | 
|---|
| 76 | S VASD("W")=$S($G(IBDF("W"))'="":IBDF("W"),1:"129") | 
|---|
| 77 | ; | 
|---|
| 78 | D SDA^VADPT | 
|---|
| 79 | ; | 
|---|
| 80 | I $O(^UTILITY("VASD",$J,"")) S CNT=0 | 
|---|
| 81 | S I="" F  S I=$O(^UTILITY("VASD",$J,I),-1) Q:I=""  S RESULT(CNT)=$G(^UTILITY("VASD",$J,I,"E"))_"^"_$G(^UTILITY("VASD",$J,I,"I")),CNT=CNT+1 | 
|---|
| 82 | ; | 
|---|
| 83 | I VAERR=1 S RESULT(0)="Invalid Patient Identifier^^" | 
|---|
| 84 | K ^UTILITY("VASD",$J) | 
|---|
| 85 | Q | 
|---|
| 86 | ; | 
|---|
| 87 | TEST ; | 
|---|
| 88 | K IBDF,ALAN | 
|---|
| 89 | S IBDF("DFN")=7169761 | 
|---|
| 90 | S IBDF("CLINIC")=300 | 
|---|
| 91 | S IBDF("APPT")=2970902.0849 | 
|---|
| 92 | S IBDF("UNFORMAT")=1 | 
|---|
| 93 | D GETALL(.ALAN,.IBDF) | 
|---|
| 94 | Q | 
|---|
| 95 | TESTW ; | 
|---|
| 96 | K IBDF | 
|---|
| 97 | S IBDF("DFN")=7169761 | 
|---|
| 98 | S IBDF("CLINIC")=300 | 
|---|
| 99 | S IBDF("APPT")=2970902.0849 | 
|---|
| 100 | D WRITE | 
|---|
| 101 | K IBDF | 
|---|
| 102 | Q | 
|---|
| 103 | ; | 
|---|
| 104 | TESTA ; | 
|---|
| 105 | K ALAN,IBDF | 
|---|
| 106 | S IBDF("DFN")=7169761 | 
|---|
| 107 | D APPTLST(.ALAN,.IBDF) | 
|---|
| 108 | Q | 
|---|