VistA-FOIAVistA/r/AUTOMATED_LAB_INSTRUMENTS-LA/LA7UTL1A.m

232 lines
8.8 KiB
Mathematica

LA7UTL1A ;HOIFO/BH - Microbiology Query Utility ; 3/11/03 10:45am
;;5.2;AUTOMATED LAB INSTRUMENTS;**69**;Sep 27, 1994
;
;
GETDATA(LRDFN,LASDT,LAEDT,LASEARCH,RESULTS) ;
;
; Input:
;
; LRDFN - Lab DFN
; LASDT - Search Start Date
; LAEDT - Search End Date
; LASEARCH - Set to CD (collection date) or RAD (completion date).
; RESULTS - Closed root destination array reference
;
; Output:
; If an error is found with the input variables one for the
; strings will be returned.
;
; -1^Start date is after end date
; -2^No return array global
; -3^Global array only
; -4^No Patient lab DFN
; -5^No Start Date Range
; -6^No End Date Range
;
; If there are no errors with the input variables the processing
; will return '1'. If there is no data in the passed in global
; there was no data available for the patient.
;
; If there is data available for the patient the routine will pass
; back the following data (the example assumes the passed in closed
; root global was "^TMP($J)"):
;
; Fields .01 (Accession date),.05 (Site Specimen),.055 (Sample Type),
; .06 (Accession #),11.51 (Sterility Control),11.57 (Urine Screen),
; 11.58 (Sputum Screen), 22 (TB RPT Date Approved), 23 (TB RPT Status),
; 24 (ACID Fast Stain), 25 (Quantity) and .99 (Specimen Comment) from
; the top node in the following format;
;
; ^TMP($J,LRDFN,Record_IEN,"0",Field #,"E" or "I")=Field Data
;
; Field .01 of sub file 63.29 - Gram Stain - in the following format
;
; ^TMP($J,LRDFN,Record_IEN,"2",Sub File IEN,"0",Field #,"E" or "I")=Data
;
; Field .01 (Organism) and 1 (Quantity) of sub file 63.3 in the
; following format;
;
; ^TMP($J,LRDFN,Record_IEN,"3",Sub File IEN,"0",Field #,"E" or "I")=Data
;
; Within the Organism data there is an antibiotic multiple. The
; routine returns the antibiotic (.01) along with the Mic (field #1)
; and Mbc (field #2) from the sub file 63.32 in the following format;
;
; ^TMP($J,LRDFN,Record_IEN,"3",Sub File IEN,"3",Sub-Sub File IEN,"0"
; ,Field #,"E" or "I")=Data
;
;
; Organisms can potentially have specific antibiotics associated with
; them. This API pulls any of the Antibiotics (along with their
; interpretation and screen) that have been entered in the antibiotic
; fields that exist within the standard Lab DD. Within this sub file
; these fields are numbered between 5 and 160.2 and have node numbers
; that begin with the numbers 2.00.
; It is also possible for sites to enter their own specific named
; antibiotics within this multiple using a lab option. This option
; creates a new node number for the new antibiotic entry that is
; comprised in the
; following way "2.00"_site #_n (where n is an incremented number).
; This node number also becomes the field number for this antibiotic.
; The interpretation and screen values of these antibiotics should
; follow a pattern where interpretation field number is comprised as
; follows "2.00"_site #_n_1 and the screen is "2.00"_site #_n_2.
;
; However only antibiotics have been entered in the standard Organism
; DD will get extracted. Any antibiotics entered into the site
; specified fields will not get extracted.
;
; ^TMP($J,LRDFN,Record_IEN,"3",Sub File IEN,"0",Field #,"I")=data
; ^TMP($J,LRDFN,Record_IEN,"3",Sub File IEN,"0",Field #,"E")=field name
; ^data
;
; Note the "E" node contains the field name and it's related data.
;
;
; Within the Organism data there is a comment multiple which the
; routine also returns.
; Field .01 Comment of sub file 63.31 in the following format;
;
; ^TMP($J,LRDFN,Record_IEN,"3",Sub File IEN,"1",Sub-Sub File IEN,"0"
; ,Field #,"E" or "I")=Data
;
; Field .01 Bact RPT Remark of sub file 63.33 in the following format;
;
; ^TMP($J,LRDFN,Record_IEN,"4",Sub File IEN,"0",Field #,"E" or "I")=Data
;
; Field .01 Parasite of sub file 63.34 in the following format;
;
; ^TMP($J,LRDFN,Record_IEN,"6",Sub File IEN,"0",Field #,"E" or "I")=Data
;
; Within Parasite data there is a stage code multiple that the routine
; also returns.
; Fields .01 Stage code and 1 Quantity of sub file 63.35 in the
; following format;
;
; ^TMP($J,LRDFN,Record_IEN,"6",Sub File IEN,"1",Sub-Sub File IEN,"0"
; ,Field #,"E" or "I")=Data
;
; Within the Stage Code multiple there can be a Stage Code Comment
; multiple that this routine also returns;
; Field .01 of the Stage Code Comment Multiple 63.351 in the
; following format;
;
;
; ^TMP($J,LRDFN,Record_IEN,"6",Sub File IEN,"1",Sub-Sub File IEN,"1"
; ,Sub Sub Sub File IEN,"0",Field #,"E" or "I")=Data)
;
; Field .01 Parasite RPT Remark 63.36 in the following format;
;
; ^TMP($J,LRDFN,Record_IEN,"7",Sub File IEN,"0",Field #,"E" or "I")=Data
;
; Field .01 Fungus/Yeast and field 1 Quantity of sub file 63.37 in the
; following format;
;
; ^TMP($J,LRDFN,Record_IEN,"9",Sub File IEN,"0",Field #,"E" or "I")=Data
;
; Within the Fungus/Yeast data there is a comment multiple which the
; routine also returns.
; Field .01 Comment of sub file 63.372 in the following format;
;
; ^TMP($J,LRDFN,Record_IEN,"9",Sub File IEN,"1",Sub-Sub File IEN,"0"
; ,Field #,"E" or "I")=Data
;
;
; Field .01 Mycobacterium and field 1 Quantity of sub file 63.39 in
; the following format;
;
; ^TMP($J,LRDFN,Record_IEN,"12",Sub File IEN,"0",Field #,"E" or "I")
; =Data
; Mycobacterium can potentially have antibiotics associated with them.
; This API pulls any of the Antibiotics that have been entered in the
; antibiotic
; fields that exist within the standard Lab DD. Within this sub file
; these fields are numbered between 5 and 55).
; It is also possible for sites to enter their own antibiotics
; within this multiple using a lab option. This option creates a new
; node number for the new antibiotic entry that is comprised in the
; following way "2.00"_site #_n (where n is an incremented number).
; This node number also becomes the field number for this antibiotic.
;
; However only antibiotics have been entered in the standard
; Mycobacterium antibiotic DD will get extracted. Any antibiotics
; entered into the site specified fields will not get extracted.
;
; ^TMP($J,LRDFN,Record_IEN,"12",Sub File IEN,"0",Field #,"I")=data
; ^TMP($J,LRDFN,Record_IEN,"12",Sub File IEN,"0",Field #,"E")
; =field name^data
;
; Note the "E" node contains the field name and it's related data.
;
;
;
; Within the Mycobacterium data there is a comment multiple which the
; routine also returns.
; Field .01 Comment of sub file 63.4 in the following format;
;
; ^TMP($J,LRDFN,Record_IEN,"12",Sub File IEN,"1",Sub-Sub File IEN,"0"
; ,Field #,"E" or "I")=Data
;
; Field .01 BACT Smear/Prep of sub file 63.291 in the following format;
;
; ^TMP($J,LRDFN,Record_IEN,"25",Sub File IEN,"0",Field #,"E" or "I")
; = Data
;
; Field .01 PARA Smear/Prep of sub file 63.341 in the following format;
;
; ^TMP($J,LRDFN,Record_IEN,"24",Sub File IEN,"0",Field #,"E" or "I")
; =Data
;
; Field .01 VIRUS of sub file 63.43 in the following format;
;
; ^TMP($J,LRDFN,Record_IEN,"17",Sub File IEN,"0",Field #,"E" or "I")
; =Data
;
;
; ---------------------------------------------------------------------
;
N LAARRAY,LAINX,LATYP,LAFILE,LAARRET,LACD,LACDFLD,LACDTYP,LADATA,LASET,LASUB,LA763,LATYPE
;
I LASDT>LAEDT Q "-1^Start date is after end date"
I '$D(RESULTS) Q "-2^No return array global"
I $E(RESULTS,1,1)'="^" Q "-3^Global array only"
I '+$G(LRDFN) Q "-4^No Patient lab DFN"
I '$G(LASDT) Q "-5^No Start Date Range"
I '$G(LAEDT) Q "-6^No End Date Range"
S LAFILE=63.05,LATYPE="MI"
;
; - Used for internal processing
S LAARRAY="^XTMP(""LA7UTL1A"",$J)"
; - Passed in global reference, returns results
S LAARRET=$S($G(RESULTS)'="":RESULTS,1:"^TMP(""LA7UTL1A"","_$J_")")
K @LAARRAY,@LAARRET
I LASEARCH="RAD" D RAD
I LASEARCH="CD" D CD
;
Q 1
;
CD ; Search by collection date
;
N LRIDT,LRSS,LANSDT,LANEDT
;
I LASDT S LANSDT=9999999-LASDT
I LAEDT S LANEDT=9999999-LAEDT
;
S LRIDT=LANSDT
F S LRIDT=$O(^LR(LRDFN,LATYPE,LRIDT),-1) Q:LRIDT=""!(LRIDT<LANEDT) D
. D MI^LA7UTL1C(LRDFN,LRIDT,LAARRAY),ARRANGE^LA7UTL1B(LAARRAY,LAARRET)
;
Q
;
RAD ; Search by completion date.
;
N LRIDT
S LRIDT=0
F S LRIDT=$O(^LR(LRDFN,LATYPE,LRIDT)) Q:'LRIDT D
. S LA763(0)=$G(^LR(LRDFN,LATYPE,LRIDT,0))
. I $P(LA763(0),"^",3)>LASDT,$P(LA763(0),"^",3)<LAEDT D MI^LA7UTL1C(LRDFN,LRIDT,LAARRAY),ARRANGE^LA7UTL1B(LAARRAY,LAARRET)
Q
;
;
;