109 lines
3.9 KiB
Mathematica
109 lines
3.9 KiB
Mathematica
IBDFRPC5 ;ALB/AAS - AICS Pass data to PCE, Broker Call ; 24-FEB-96
|
|
;;3.0;AUTOMATED INFO COLLECTION SYS;**3,38**;APR 24, 1997
|
|
;
|
|
GETALL(RESULT,IBDATA) ; -- called by RPC and by write
|
|
; -- get all encounter data
|
|
; -- input Result (called by reference)
|
|
; IBDATA (called by reference)
|
|
; IBDATA("CLINIC") := pointer to hospital location file (44)
|
|
; IBDATA("DFN") := pointer to Patient file (2)
|
|
; IBDATA("APPT") := date/time of encounter in FM format
|
|
; IBDATA("UNFORMAT") := (optional, default :=0) return piece
|
|
; as displayable
|
|
; -- output Results Array
|
|
; A sequential array of all data found for encounters for
|
|
; patient/clinic/appt
|
|
; if ibdata(unformat) is false then data is preformatted
|
|
; suitable for display to a crt.
|
|
; if ibdata(unformat) is true then a record as follows:
|
|
; P1 := data qualifier (ie primary or secondary)
|
|
; P2 := type of data
|
|
; p3 := Narrative or Description (Textual name)
|
|
; P4 := value (code or date/time)
|
|
; P5 := source of data (aics, pce, scheduling)
|
|
; P6 := Quantity (cpt codes only)
|
|
; The next 4 pieces only set if answered
|
|
; P7 := sc (null, 1 or 0) encounter node only
|
|
; P8 := ao (null, 1 or 0) encounter node only
|
|
; P9 := ir (null, 1 or 0) encounter node only
|
|
; P10 := ec (null, 1 or 0) encounter node only
|
|
;
|
|
N CNT,IBDI,ENCTRS,L
|
|
S CNT=0,ENCTRS=""
|
|
D GETDATA(.RESULT,.IBDATA,.ENCTRS)
|
|
S L=" "
|
|
I +RESULT(0) S RESULT(0)="The following data was found: " D FINDALL^IBDFRPC6(.RESULT)
|
|
;F IBDI="VST","PRV","POV","CPT","HF","PED","XAM","SK","IMM","TRT" D @(IBDI_"^IBDFRPC6")
|
|
GETALLQ Q
|
|
;
|
|
GETDATA(RESULT,IBDATA,ENCTRS) ; -- return all data for an encounter date time
|
|
;
|
|
N IBDJ,IBDY
|
|
K ^TMP("PXKENC",$J)
|
|
I +IBDATA("CLINIC")'=IBDATA("CLINIC"),IBDATA("CLINIC")'="" S IBDATA("CLINIC")=$O(^SC("B",IBDATA("CLINIC"),0))
|
|
S RESULT(0)="Nothing Processed, Perhaps an Error Occurred"
|
|
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
|
|
;
|
|
; -- first get visit iens
|
|
S ENCTRS=$$GETENC^PXAPI(IBDATA("DFN"),IBDATA("APPT"),IBDATA("CLINIC"))
|
|
I ENCTRS=-1 S RESULT(0)="No encounter Data on file." G GETQ
|
|
I ENCTRS=-2 S RESULT(0)="Error in calling routine, file a NOIS" G GETQ
|
|
;
|
|
; -- then get all visit data
|
|
S RESULT(0)="Attempting to Retieve Data"
|
|
F IBDJ=1:1 S IBDY=$P(ENCTRS,"^",IBDJ) Q:IBDY="" D ENCEVENT^PXAPI(IBDY,1)
|
|
;
|
|
S RESULT(0)="1"
|
|
GETQ Q
|
|
;
|
|
WRITE ; -- called by DIR as executable help from IBDFDE
|
|
N RESULT,IBQUIT,I,CNT
|
|
W !,"Retrieving Encounter Data from PCE..."
|
|
D GETALL(.RESULT,.IBDF)
|
|
W !
|
|
S I="",IBQUIT=0,CNT=0
|
|
F S I=$O(RESULT(I)) Q:I="" S CNT=CNT+1 D:'(CNT#10) PAUSE^IBDFDE Q:IBQUIT W !,RESULT(I)
|
|
Q
|
|
;
|
|
APPTLST(RESULT,IBDF) ; -- return past appointment list, called by rpc
|
|
N I,J,CNT,DFN,VASD,VAERR,VAROOT
|
|
S RESULT(0)="No Past Appointments Found^^"
|
|
K ^UTILITY("VASD",$J)
|
|
;
|
|
S DFN=+$G(IBDF("DFN"))
|
|
S VASD("F")=$S($G(IBDF("F"))>2840000:IBDF("F"),1:DT-10000)
|
|
S VASD("T")=$S($G(IBDF("T"))>2840000:IBDF("T"),1:DT+.24)
|
|
S VASD("W")=$S($G(IBDF("W"))'="":IBDF("W"),1:"129")
|
|
;
|
|
D SDA^VADPT
|
|
;
|
|
I $O(^UTILITY("VASD",$J,"")) S CNT=0
|
|
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
|
|
;
|
|
I VAERR=1 S RESULT(0)="Invalid Patient Identifier^^"
|
|
K ^UTILITY("VASD",$J)
|
|
Q
|
|
;
|
|
TEST ;
|
|
K IBDF,ALAN
|
|
S IBDF("DFN")=7169761
|
|
S IBDF("CLINIC")=300
|
|
S IBDF("APPT")=2970902.0849
|
|
S IBDF("UNFORMAT")=1
|
|
D GETALL(.ALAN,.IBDF)
|
|
Q
|
|
TESTW ;
|
|
K IBDF
|
|
S IBDF("DFN")=7169761
|
|
S IBDF("CLINIC")=300
|
|
S IBDF("APPT")=2970902.0849
|
|
D WRITE
|
|
K IBDF
|
|
Q
|
|
;
|
|
TESTA ;
|
|
K ALAN,IBDF
|
|
S IBDF("DFN")=7169761
|
|
D APPTLST(.ALAN,.IBDF)
|
|
Q
|