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

LRPXAPP.m

Go to the documentation of this file.
  1. LRPXAPP ;VA/SLC/STAFF - Test Lab APIs ;11/12/03 15:44
  1. ;;5.2;LAB SERVICE;**1030,1031**;NOV 01, 1997
  1. ;
  1. ;;VA LR Patche(s): 295
  1. ;
  1. ; - This routine shows examples of calling APIs in LRPXAPI.
  1. ; - This routine is provided for documentation and testing.
  1. ; - The temp global ^TMP("LRPXAPI",$J, is used as an example.
  1. ; - You should use a TMP global with your package's namespace.
  1. ;
  1. TESTS ; sample application to test TESTS API
  1. ; gets the lab tests (without results) on a patient (in date range)
  1. N COND,DFN,ERR,FROM,ITEMS,MORE,TO,TYPE K ITEMS
  1. K ^TMP("LRPXAPP",$J)
  1. D GETTYPE^LRPXAPPU(.TYPE,.ERR) I ERR Q
  1. D GETPT^LRPXAPPU(.DFN,.ERR) I ERR Q
  1. D GETDATE^LRPXAPPU(.FROM,.TO,.ERR) I ERR Q
  1. D GETCOND^LRPXAPPU(.COND,TYPE,.ERR) I ERR Q
  1. F D Q:'MORE
  1. . D TESTS^LRPXAPI(.ITEMS,DFN,TYPE,,.MORE,COND,FROM,TO)
  1. . M ^TMP("LRPXAPP",$J)=ITEMS
  1. D DISPLAY^LRPXAPPU
  1. K ^TMP("LRPXAPP",$J)
  1. Q
  1. ;
  1. ARESULTS ; sample application to test RESULTS API for all results
  1. ; gets all lab results on a patient (in date range)
  1. N COND,DFN,ERR,FROM,TO,TYPE
  1. K ^TMP("LRPXAPP",$J)
  1. D GETTYPE^LRPXAPPU(.TYPE,.ERR) I ERR Q
  1. D GETPT^LRPXAPPU(.DFN,.ERR) I ERR Q
  1. D GETDATE^LRPXAPPU(.FROM,.TO,.ERR) I ERR Q
  1. D GETCOND^LRPXAPPU(.COND,TYPE,.ERR) I ERR Q
  1. D RESULTS^LRPXAPI("LRPXAPP",DFN,TYPE,1000000,,COND,FROM,TO)
  1. D DISPLAY^LRPXAPPU
  1. K ^TMP("LRPXAPP",$J)
  1. Q
  1. ;
  1. RESULTS ; sample application to test RESULTS API
  1. ; gets patient's lab test results (in date range)
  1. K ^TMP("LRPXAPP",$J)
  1. N COND,DFN,ERR,FROM,ITEM,MORE,RESULTS,TO,TYPE K RESULTS
  1. D GETTYPE^LRPXAPPU(.TYPE,.ERR) I ERR Q
  1. D GETPT^LRPXAPPU(.DFN,.ERR) I ERR Q
  1. D GETDATE^LRPXAPPU(.FROM,.TO,.ERR) I ERR Q
  1. I TYPE="C" D GETTEST^LRPXAPPU(.ITEM,TYPE,.ERR) I ERR Q
  1. I TYPE="A" D GETAP^LRPXAPPU(.ITEM,.ERR) I ERR Q
  1. I TYPE="M" D GETMICRO^LRPXAPPU(.ITEM,.ERR) I ERR Q
  1. D GETCOND^LRPXAPPU(.COND,TYPE,.ERR) I ERR Q
  1. F D Q:'MORE
  1. . D RESULTS^LRPXAPI(.RESULTS,DFN,ITEM,,.MORE,COND,FROM,TO)
  1. . M ^TMP("LRPXAPP",$J)=RESULTS
  1. D DISPLAY^LRPXAPPU
  1. K ^TMP("LRPXAPP",$J)
  1. Q
  1. ;
  1. PATIENTS ; sample application to test PATIENTS API
  1. ; gets all patients that have had a specific lab test (in date range)
  1. N ERR,COND,FROM,ITEM,MORE,PATIENTS,SUB,TO,TYPE K PATIENTS
  1. D GETTYPE^LRPXAPPU(.TYPE,.ERR) I ERR Q
  1. I TYPE="C" D GETTEST^LRPXAPPU(.ITEM,TYPE,.ERR) I ERR Q
  1. I TYPE="A" D GETAP^LRPXAPPU(.ITEM,.ERR) I ERR Q
  1. I TYPE="M" D GETMICRO^LRPXAPPU(.ITEM,.ERR) I ERR Q
  1. D GETCOND^LRPXAPPU(.COND,TYPE,.ERR) I ERR Q
  1. D GETDATE^LRPXAPPU(.FROM,.TO,.ERR) I ERR Q
  1. F D Q:'MORE
  1. . D PATIENTS^LRPXAPI(.PATIENTS,ITEM,,10,.MORE,COND,FROM,TO)
  1. . S SUB=""
  1. . F S SUB=$O(PATIENTS(SUB)) Q:SUB="" W !,PATIENTS(SUB)
  1. Q
  1. ;
  1. DATES ; sample application to test DATES API
  1. ; gets the dates of labs (without results) on a patient (in date range)
  1. N DFN,ERR,FROM,ITEMS,MORE,TO,TYPE K ITEMS
  1. K ^TMP("LRPXAPP",$J)
  1. D GETPT^LRPXAPPU(.DFN,.ERR) I ERR Q
  1. D GETTYPE^LRPXAPPU(.TYPE,.ERR) I ERR Q
  1. D GETDATE^LRPXAPPU(.FROM,.TO,.ERR) I ERR Q
  1. F D Q:'MORE
  1. . D DATES^LRPXAPI(.ITEMS,DFN,TYPE,,.MORE,FROM,TO)
  1. . M ^TMP("LRPXAPP",$J)=ITEMS
  1. D DISPLAY^LRPXAPPU
  1. K ^TMP("LRPXAPP",$J)
  1. Q
  1. ;
  1. TESTLOOK ; test a lookup that screens for only tests done on patient
  1. N DIC,DFN,ERR,X,Y K DIC
  1. D GETPT^LRPXAPPU(.DFN,.ERR) I ERR Q
  1. S DIC=60,DIC(0)="AEMOQ"
  1. S DIC("S")="I $P(^(0),U,4)=""CH"",$$HASITEM^LRPXAPI(DFN,+Y)"
  1. D ^DIC I Y<1 Q
  1. W !,Y
  1. Q
  1. ;
  1. TESTVAL ; test conditions and values for a patient's test
  1. Q:'$$PATCH^BLRUTIL4("PXRM*1.5*12") ; IHS/MSC/MKK - LR*5.2*1031
  1. ;
  1. N COL,COND,DFN,ERR,LRDFN,LRDN,LRIDT,RESULT,TEST
  1. D GETPT^LRPXAPPU(.DFN,.ERR) I ERR Q
  1. S LRDFN=$$LRDFN^LRPXAPIU(DFN)
  1. D GETTEST^LRPXAPPU(.TEST,"C",.ERR) I ERR Q
  1. S LRDN=$$LRDN^LRPXAPIU(TEST)
  1. D GETCOND^LRPXAPPU(.COND,TYPE,.ERR) I ERR Q
  1. S COL=0
  1. F S COL=$O(^PXRMINDX(63,"IP",TEST,DFN,COL)) Q:COL<1 D
  1. . S LRIDT=$$LRIDT^LRPXAPIU(COL)
  1. . W !!,$$VAL^LRPXAPI(LRDFN,LRIDT,LRDN)
  1. . D VALUE^LRPXAPI(.RESULT,DFN,COL,TEST,COND,.ERR)
  1. . W !,RESULT
  1. . D LRVALUE^LRPXAPI(.RESULT,LRDFN,LRIDT,LRDN,COND,.ERR)
  1. . W !,RESULT
  1. Q
  1. ;
  1. VALUES ; test to get patient's values from PXRMINDX index
  1. Q:'$$PATCH^BLRUTIL4("PXRM*1.5*12") ; IHS/MSC/MKK - LR*5.2*1031
  1. ;
  1. N COL,DFN,ERR,ITEM,NODE,RESULT,STOP,TYPE
  1. D GETTYPE^LRPXAPPU(.TYPE,.ERR) I ERR Q
  1. D GETPT^LRPXAPPU(.DFN,.ERR) I ERR Q
  1. I TYPE="C" S ITEM=0,STOP="@"
  1. I TYPE="A" S ITEM="A",STOP="AZ"
  1. I TYPE="M" S ITEM="M",STOP="MZ"
  1. F S ITEM=$O(^PXRMINDX(63,"PI",DFN,ITEM)) Q:ITEM="" Q:ITEM]STOP D
  1. . S COL=0
  1. . F S COL=$O(^PXRMINDX(63,"PI",DFN,ITEM,COL)) Q:COL<1 D
  1. .. S NODE=""
  1. .. F S NODE=$O(^PXRMINDX(63,"PI",DFN,ITEM,COL,NODE)) Q:NODE="" D
  1. ... D LRPXRM^LRPXAPI(.RESULT,NODE,ITEM)
  1. ... W !,ITEM,!,NODE,!,RESULT
  1. Q
  1. ;
  1. SPEC ; test of specimen APIs
  1. Q:'$$PATCH^BLRUTIL4("PXRM*1.5*12") ; IHS/MSC/MKK - LR*5.2*1031
  1. ;
  1. ; displays specimen node, comments, results
  1. ; restricted to MAX number of collections
  1. N COL,COLCNT,CNT,DATA,DFN,ERR,ITEM,MAX,RESULTS K COLCNT,RESULTS
  1. S MAX=10,CNT=0
  1. D GETPT^LRPXAPPU(.DFN,.ERR) I ERR Q
  1. S ITEM=0
  1. F S ITEM=$O(^PXRMINDX(63,"PI",DFN,ITEM)) Q:ITEM<1 D Q:CNT>MAX
  1. . S COL=0
  1. . F S COL=$O(^PXRMINDX(63,"PI",DFN,ITEM,COL)) Q:COL<1 D Q:CNT>MAX
  1. .. I $D(COLCNT(COL)) Q
  1. .. S COLCNT(COL)="",CNT=CNT+1
  1. .. ; use "A", "C", "S", "V" to test
  1. .. D SPEC^LRPXAPI(.RESULTS,DFN,COL,"A",.ERR)
  1. .. W !
  1. .. W !,$$COMMENT^LRPXAPI($$LRDFN^LRPXAPIU(DFN),$$LRIDT^LRPXAPIU(COL))
  1. .. S DATA="RESULTS(0)"
  1. .. F S DATA=$Q(@DATA) Q:DATA="" D
  1. ... W !,DATA_"="_@DATA
  1. .. K RESULTS
  1. Q
  1. ;
  1. CHNODE ; test CH data - some not defined
  1. N CNT,ERR,DEF,DFN,LRDFN,LRDN,LRIDT,NODE,RESULTS K RESULTS
  1. D GETPT^LRPXAPPU(.DFN,.ERR) I ERR Q
  1. S LRDFN=$$LRDFN^LRPXAPIU(DFN)
  1. S CNT=0
  1. S LRIDT=0
  1. F S LRIDT=$O(^LR(LRDFN,"CH",LRIDT)) Q:LRIDT<1 D Q:CNT>3
  1. . S CNT=CNT+1
  1. . W !!!,LRDFN," ",LRIDT
  1. . S LRDN=1
  1. . F S LRDN=$O(^LR(LRDFN,"CH",LRIDT,LRDN)) Q:LRDN<1 D
  1. .. S NODE=$G(^LR(LRDFN,"CH",LRIDT,LRDN))
  1. .. W !!,LRDN,!,NODE,!
  1. .. D CHNODE^LRPXAPI(.RESULTS,NODE)
  1. .. S DEF=""
  1. .. F S DEF=$O(RESULTS(DEF)) Q:DEF="" D
  1. ... W !,DEF," = ",RESULTS(DEF)
  1. Q
  1. ;
  1. CONDOK ; sample application to test if condition is valid
  1. N COND,ERR,TYPE
  1. D GETTYPE^LRPXAPPU(.TYPE,.ERR) I ERR Q
  1. F D GETCOND^LRPXAPPU(.COND,TYPE,.ERR) Q:ERR Q:'$L(COND) D
  1. . I $$CONDOK^LRPXAPIU(COND) W !,COND,!,"condition is ok" Q
  1. . W !,COND,!,"condition is NOT ok" Q
  1. Q
  1. ;