| 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
 | 
|---|