Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: LRPXAPI

LRPXAPI.m

Go to the documentation of this file.
  1. LRPXAPI ;SLC/STAFF Lab Extract APIs ;2/26/04 13:34
  1. ;;5.2;LAB SERVICE;**295**;Sep 27, 1994
  1. ;
  1. ; lab extract API routines
  1. ; dbia 4245
  1. ; no need to namespace local variables when calling these APIs
  1. ; the LRPXAPP routine shows examples of calling these APIs
  1. ; parameters: (.parameter is a call by reference)
  1. ; .TESTS array(ien)=ien^test name
  1. ; .VALUES array(seq of recent first)=col date/time^TEST^comment flag^RESULT
  1. ; .PATS array(dfn)=dfn^patient name
  1. ; .DATES array(-date)=date
  1. ; DFN is patient ien
  1. ; MAX is optional, # of tests,values,pts to return/call, default is 100
  1. ; .NEXT is optional, if NEXT'=0 then not finished
  1. ; COND is optional, condition for value (example I V>30), default is ""
  1. ; TYPE is [C M A] and is optional, default is C
  1. ; DATE1 is optional, earliest date, default is 0 (oldest)
  1. ; DATE2 is optional, latest date, default is 9999999 (most recent)
  1. ; .DATA is lab result or array(STYPE,#)= specimen, comments, datanumbers
  1. ; DATE is collection date/time
  1. ; ITEM is test number in file 60 for Chem data
  1. ; ITEM is "M;[S T O A M];[S T O A M] ien" for Micro data
  1. ; ITEM is "A;[S T O D M E F P I];[S T O D M E F P I] ien" for AP data
  1. ; SOURCE is optional, array reference used as alternate list of patients
  1. ; .RESULT is patient's test result (result^flag^...)
  1. ; NODE is data reference in ^PXRMINDX( indexes "lrdfn;CH;lridt;lrdn"
  1. ; LRDFN is lab patient ien
  1. ; LRIDT is lab collection time (inverted)
  1. ; LRDN is lab datanumbers for test values
  1. ; STYPE is "S" specimen node, "C" comments, "V" data nodes, "A" all
  1. ; .ERR is -1 when data cannot be found
  1. ;
  1. ; -- TESTS returns tests (items) on patient; dfn required --
  1. ;
  1. TESTS(TESTS,DFN,TYPE,MAX,NEXT,COND,DATE1,DATE2) ; API
  1. I $G(TESTS)?1U1UN1.14UNP,'$G(MAX) S MAX=1000000000 ; default for ^TMP is all, else 100 tests
  1. E S MAX=+$G(MAX,100)
  1. S TYPE=$G(TYPE,"C") ; default is CH data
  1. I TYPE="C" D TESTS^LRPXAPI1(.TESTS,+$G(DFN),MAX,.NEXT,$G(COND),$G(DATE1),$G(DATE2)) Q
  1. D TESTS^LRPXAPI3(.TESTS,+$G(DFN),TYPE,MAX,.NEXT,$G(COND),$G(DATE1),$G(DATE2)) Q
  1. Q
  1. ;
  1. ; -- RESULTS returns results on patient; dfn required --
  1. ;
  1. RESULTS(VALUES,DFN,ITEM,MAX,NEXT,COND,DATE1,DATE2) ; API
  1. N TYPE
  1. I $G(VALUES)?1U1UN1.14UNP,'$G(MAX) S MAX=1000000000 ; default for ^TMP is all, else 100 results
  1. E S MAX=+$G(MAX,100)
  1. S ITEM=$G(ITEM)
  1. I ITEM'=+ITEM,$L(ITEM)<5 D Q ; results for all of type or partial item
  1. . S MAX=+$G(MAX,10)
  1. . S TYPE=$E(ITEM)
  1. . I TYPE="C"!'$L(TYPE) D RESULTS^LRPXAPI1(.VALUES,+$G(DFN),MAX,.NEXT,$G(COND),$G(DATE1),$G(DATE2)) Q
  1. . D RESULTS^LRPXAPI3(.VALUES,+$G(DFN),ITEM,MAX,.NEXT,$G(COND),$G(DATE1),$G(DATE2)) Q
  1. I ITEM=+ITEM D TRESULTS^LRPXAPI1(.VALUES,+$G(DFN),ITEM,MAX,.NEXT,$G(COND),$G(DATE1),$G(DATE2)) Q
  1. S TYPE=$E(ITEM)
  1. D TRESULTS^LRPXAPI3(.VALUES,+$G(DFN),TYPE,ITEM,MAX,.NEXT,$G(COND),$G(DATE1),$G(DATE2)) Q
  1. Q
  1. ;
  1. ; -- PATIENTS returns patients with a specific item; item required --
  1. ;
  1. PATIENTS(PATS,ITEM,SOURCE,MAX,NEXT,COND,DATE1,DATE2) ; API
  1. N TYPE
  1. I $G(PATS)?1U1UN1.14UNP,'$G(MAX) S MAX=1000000000 ; default for ^TMP is all, else 100 patients
  1. E S MAX=+$G(MAX,100)
  1. S ITEM=$G(ITEM,0)
  1. I ITEM=0!'$L($G(ITEM)) D ALLPATS^LRPXAPI3(.PATS,$G(SOURCE),MAX,.NEXT,$G(COND),$G(DATE1),$G(DATE2)) Q
  1. I ITEM'=+ITEM,$L(ITEM)<5 D Q ; patients for all of type or partial item
  1. . S TYPE=$E(ITEM)
  1. . I TYPE="C" D PTS^LRPXAPI1(.PATS,$G(SOURCE),MAX,.NEXT,$G(COND),$G(DATE1),$G(DATE2)) Q
  1. . D PTS^LRPXAPI3(.PATS,TYPE,ITEM,$G(SOURCE),MAX,.NEXT,$G(COND),$G(DATE1),$G(DATE2)) Q
  1. I ITEM=+ITEM D PATIENTS^LRPXAPI1(.PATS,ITEM,$G(SOURCE),MAX,.NEXT,$G(COND),$G(DATE1),$G(DATE2)) Q
  1. S TYPE=$E(ITEM)
  1. D PATIENTS^LRPXAPI3(.PATS,TYPE,ITEM,$G(SOURCE),MAX,.NEXT,$G(COND),$G(DATE1),$G(DATE2)) Q
  1. Q
  1. ;
  1. ; -- DATES returns col date/times as (date) or (type,date); dfn required --
  1. ;
  1. DATES(DATES,DFN,TYPE,MAX,NEXT,DATE1,DATE2) ; API
  1. I $G(DATES)?1U1UN1.14UNP,'$G(MAX) S MAX=1000000000 ; default for ^TMP is all, else 100 date/times
  1. E S MAX=+$G(MAX,100)
  1. S TYPE=$G(TYPE,"C") ; default is CH data
  1. D DATES^LRPXAPI1(.DATES,+$G(DFN),TYPE,MAX,.NEXT,$G(DATE1),$G(DATE2))
  1. Q
  1. ;
  1. ; ------------ other extract APIs --------------------
  1. ;
  1. VALUE(RESULT,DFN,DATE,TEST,COND,ERR) ; API
  1. ; returns result node as RESULT; dfn, date, test required
  1. D VALUE^LRPXAPI2(.RESULT,+$G(DFN),+$G(DATE),+$G(TEST),$G(COND),.ERR)
  1. Q
  1. ;
  1. LRVALUE(RESULT,LRDFN,LRIDT,LRDN,COND,ERR) ; API
  1. ; returns result node as RESULT; lrdfn, lridt, lrdn required
  1. D LRVALUE^LRPXAPI2(.RESULT,+$G(LRDFN),+$G(LRIDT),+$G(LRDN),$G(COND),.ERR)
  1. Q
  1. ;
  1. LRPXRM(RESULT,NODE,ITEM,TYPES) ; API
  1. ; returns lab data using ^PXRMINDX indexes; node, item required
  1. ; types of data: V value, S specimen, C comments, or combinations
  1. D LRPXRM^LRPXAPI2(.RESULT,$G(NODE),$G(ITEM),$G(TYPES,"VS"))
  1. Q
  1. ;
  1. SPEC(DATA,DFN,DATE,STYPE,ERR) ; API
  1. ; returns specimen node, comments, data nodes
  1. ; returned in array DATA; dfn, date required
  1. D SPEC^LRPXAPI2(.DATA,+$G(DFN),+$G(DATE),$G(STYPE),.ERR)
  1. Q
  1. ;
  1. LRSPEC(DATA,LRDFN,LRIDT,STYPE,ERR) ; API
  1. ; returns specimen node, comments, data nodes
  1. ; returned in array DATA; lrdfn, lridt required
  1. D LRSPEC^LRPXAPI2(.DATA,+$G(LRDFN),+$G(LRIDT),$G(STYPE),.ERR)
  1. Q
  1. ;
  1. VERIFIED(LRDFN,LRIDT) ; API $$(lrdfn,lridt) -> 1 if verified, else 0
  1. Q $$VERIFIED^LRPXAPI2(+$G(LRDFN),+$G(LRIDT))
  1. ;
  1. MIVERIFY(LRDFN,LRIDT,SUB) ; $$(lrdfn,lridt,sub) -> 1 if verified, else 0
  1. Q $$MIVERIFY^LRPXAPI2(+$G(LRDFN),+$G(LRIDT),$G(SUB,"MI"))
  1. ;
  1. APVERIFY(LRDFN,LRIDT,SUB) ; $$(lrdfn,lridt,sub) -> 1 if verified, else 0
  1. Q $$APVERIFY^LRPXAPI2(+$G(LRDFN),+$G(LRIDT),$G(SUB))
  1. ;
  1. VAL(LRDFN,LRIDT,LRDN) ; API $$(lrdfn,lridt,lrdn) -> result node
  1. Q $$VAL^LRPXAPI2(+$G(LRDFN),+$G(LRIDT),+$G(LRDN))
  1. ;
  1. REFVAL(NODE) ; API $$(reference node) -> data node
  1. Q $$REFVAL^LRPXAPI2($G(NODE))
  1. ;
  1. COMMENT(LRDFN,LRIDT) ; API $$(lrdfn,lridt) --> 1 if comment exists, else 0
  1. Q $$COMMENT^LRPXAPI2(+$G(LRDFN),+$G(LRIDT))
  1. ;
  1. ACCY(TESTS,ACC,BDN) ; API
  1. ; returns TESTS from yearly accession, ACC, BDN required
  1. ; BDN is beginning date number
  1. D ACCY^LRPXAPI2(.TESTS,ACC,BDN)
  1. Q
  1. ;
  1. CHNODE(ARRAY,NODE) ; API
  1. ; returns ARRAY of values on CH result node
  1. D CHNODE^LRPXAPI2(.ARRAY,$G(NODE))
  1. Q
  1. ;
  1. HASITEM(DFN,ITEM) ; API $$(dfn,item) -> 1 if patient has item, else 0
  1. I $D(^PXRMINDX(63,"PI",+$G(DFN),$G(ITEM,0))) Q 1
  1. Q 0
  1. ;