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

BLRAG09B.m

Go to the documentation of this file.
  1. BLRAG09B ;IHS/MSC/SAT - LABORATORY ACCESSION GUI RPCS ;NOV 16, 2012
  1. ;;5.2;IHS LABORATORY;**1031**;NOV 01, 1997;Build 185
  1. ; (from LA7SMB)
  1. ;
  1. ; BLR REF LAB USING LEDI - UL^BLRAG02 = return the value of the 'REF LAB USING LEDI?' field in the BLR MASTER CONTROL file
  1. ; BLR ICD LOOKUP - ICDLKUP^BLRAG07 = ICD code lookup
  1. ; BLR ORDER REASON LKUP - ORL^BLRAG07 = return order reasons from file 100.03
  1. ; BLR PATIENT LOOKUP - PTLK^BLRAG04 = Patient Lookup
  1. ; BLR PRINTERS AVAILABLE - DEVICE^BLRAG10 = return available printers from the DEVICE file
  1. ; BLR USER LOOKUP - NP^BLRAG06 = return entries from the NEW PERSON table 200 that are 'active'
  1. ;
  1. ; BLR ACCESSION - ACC^BLRAG05 = lab accession processor
  1. ; BLR ACCESSION PRINT - ABR^BLRAG02 = reprint accession label or manifest
  1. ; BLR ALL NON-ACCESSIONED - ANA^BLRAG01 = return all non-accessioned lab records
  1. ; BLR ALL-ACCESSIONED - ABD^BLRAG02 = return all accessioned records for given date range
  1. ; BLR COLLECTION INFO - BLC^BLRAG06 = check BLR PT CONFIRM parameter and return insurances for patient
  1. ; BLR DELETE TEST - DELTST^BLRAG08 = Cancel tests - Test are no longer deleted, instead the status is changed to Not Performed.
  1. ; BLR ORDER/TEST STATUS - LROS^BLRAG03 = return order/test status for given patient and date range
  1. ;
  1. ; BLR SHIP CONF - SC^BLRAG09A = select a shipping configuration
  1. ; BLR MANIFEST BUILD - BM^BLRAG09B = build a shipping manifest
  1. ; BLR MANIFEST CLOSE/SHIP - CLSHIP^BLRAG09C = Close/ship a shipping manifest
  1. ; BLR MANIFEST DISPLAY - DISP^BLRAG09G = screen formatted text for manifest display
  1. ; BLR MANIFEST START - SMONLY^BLRAG09C = Start a shipping manifest only, no building
  1. ; BLR MANIFEST TEST ADD - ADDTEST^BLRAG09C= Add tests to an existing manifest\
  1. ; BLR MANIFEST TEST REMOVE - REMVTST^BLRAG09C= Remove a test from manifest - actually flags test as "removed".
  1. ; BLR MANIFEST TESTS TO ADD- TARPC^BLRAG09B = return tests that can be added to a manifest
  1. ;
  1. BM(BLRY,BLRSCFG,BLRDEF,BLRAREAL,BLREXPRV,BLRIOM,BLRIOSL,BLRDEV) ; build a shipping manifest
  1. ; BLR MANIFEST BUILD rpc
  1. ; If there is not a manifest started, this routine will start a new one.
  1. ; In the return from BLR SHIP MANIFEST (SHIPPING CONFIGURATION), if
  1. ; ACTIVE_IEN is returned, there is already an active shipping manifest.
  1. ;INPUT:
  1. ; BLRSCFG = (required) Shipping Configuration IEN - pointer to the
  1. ; LAB SHIPPING CONFIGURATION file 62.9
  1. ; BLRDEF = (optional) Use default accession dates flag
  1. ; 0='No'; 1="Yes"; default to 'Yes'
  1. ; BLRAREAL = Used if NOT using default accession dates
  1. ; list of input data for each area separated by pipe |.
  1. ; each pipe piece contains the following colon pieces:
  1. ; AREA : ACCESSION DATE : FIRST ACCESSION NUMBER : LAST ACCESSION NUMBER
  1. ; AREA = (optional) ACCESSION AREA IEN
  1. ; pointer to the ACCESSION file 68.
  1. ; ACCESSION DATE = (optional) Accession date in external format.
  1. ; If this date is null, processing for
  1. ; "Use default accession dates?"
  1. ; will take place.
  1. ; FIRST ACCESSION NUMBER = (optional)
  1. ; used if ACCESSION DATE is not null
  1. ; First accession number; defaults to 1
  1. ; LAST ACCESSION NUMBER = (optional)
  1. ; used if Accession date BLRAD is not null
  1. ; Last accession number
  1. ; defaults to LAST (9999999)
  1. ; BLREXPRV = Exclude Previous flag; Should build exclude tests from
  1. ; building that have previously been removed from a manifest.
  1. ; 0='No'; 1='Yes'; default to 'Yes'
  1. ; BLRIOM = page width character count; defaults to 132
  1. ; BLRIOSL = page line count; defaults to 51
  1. ; BLRDEV = Printer for Manifest printing - IEN pointer to the DEVICE file
  1. ; No printing will occur if null or undefined in the DEVICE file
  1. ;
  1. ;RETURNS:
  1. ; ERROR_ID ^ MESSAGE ^ TESTS_ON_MANIF ^ ADDABLE_TESTS ^ MANIFEST_IEN ^
  1. ; MANIFEST_INVOICE ^ MANIFEST_DISPLAY
  1. ; TESTS_ON_MANIF = List of tests that are on this manifest
  1. ; separated by pipe:
  1. ; TEST_IEN:TEST_NAME:TEST_SPEC_PTR|...
  1. ; TEST_IEN = pointer to LABORATORY TEST file 60
  1. ; TEST_NAME = Text from NAME field in
  1. ; LABORATORY TEST file 60
  1. ; TEST_SPECIMEN_PTR = Specimen pointer
  1. ; pointer to SPECIMENS multiple of
  1. ; LAB SHIPPING MANIFEST file 62.8
  1. ; BLRPDFN = patient IEN pointer to the VA Patient file 2
  1. ; BLRPNAM = patient name
  1. ; CONFIG_NAM = Shipping Configuration Name
  1. ; CONFIG_IEN = pointer to file 62.9
  1. ; ADDABLE_TESTS = List of tests that can be added separated by pipe:
  1. ; TEST_IEN_":"_TEST_NAME_":"_UID_":"_EXT_ACC_#_":"_AREA_":"_DATE_":"_
  1. ; ACC_#|...
  1. ; TEST_IEN = pointer to LABORATORY TEST file 60
  1. ; TEST_NAME = Text from NAME field in LABORATORY TEST file 60
  1. ; UID = Test Unique ID
  1. ; EXT_ACC_# = External accession number
  1. ; AREA = area pointer into file 68
  1. ; DATE = date pointer into file 68
  1. ; ACC_# = accession # pointer into file 68
  1. ; PAT_DFN = Patient IEN pointer to the VA Patient file 2
  1. ; PAT_NAM = Patient name
  1. ; CONFIG_NAM = Shipping Configuration Name
  1. ; CONFIG_IEN = pointer to file 62.9
  1. ; MANIFEST_IEN = ien of active shipping manifest in file #62.8
  1. ; LAB SHIPPING MANIFEST
  1. ; There is not an active manifest if null or zero
  1. ; MANIFEST_INVOICE = Invoice of active Manifest
  1. ; null if ACTIVE_IEN is not returned
  1. ; MANIFEST_DISPLAY = Formatted Manifest text for screen display
  1. ; Each array entry is a single line of display and
  1. ; ends with a pipe |.
  1. ;
  1. N BLRI
  1. D ^XBKVAR S X="ERROR^BLRAGUT",@^%ZOSF("TRAP")
  1. S BLRI=0
  1. K ^TMP("BLRAG",$J)
  1. S BLRY=$$TMPGLB^BLRAGUT()
  1. S @BLRY@(0)="ERROR_ID"
  1. ;
  1. N BLRNTAL,BLRRET,BLRTSTL
  1. N LA7AA,LA7SMON
  1. K BLRTXT
  1. S (BLRNTAL,BLRTSTL,BLRTXT)=""
  1. S BLRQ=0
  1. S BLRIOM=$G(BLRIOM)
  1. S BLRIOSL=$G(BLRIOSL)
  1. S BLREXPRV=$S($G(BLREXPRV)'="":+BLREXPRV,1:1)
  1. S BLRRET=0
  1. S LA7SMON=0
  1. D EN^BLRAG09
  1. I +BLRRET S BLRI=BLRI+1 S @BLRY@(BLRI)=BLRRET D CLEANUP^BLRAG09 Q
  1. ; 0 1 2 3 4 5 6
  1. S @BLRY@(0)="CLEAN^MESSAGE^TESTS_ON_MANIF^ADDABLE_TESTS^MANIFEST_IEN^MANIFEST_INVOICE^MANIFEST_DISPLAY"
  1. I '+BLRRET D
  1. .D MTL^BLRAG09A(.BLRTSTL,+$G(LA7SM)) ;get tests already on manifest
  1. .S BLRNTAL=$$TA^BLRAG09B(BLRSCFG,+$G(LA7SM)) ;get test that can be added to manifest
  1. .D DEVT^BLRAG09D(.BLRTXT,BLRSCFG,LA7SM,BLRIOM,BLRIOSL) ;get manifest display text array
  1. .I $G(BLRDEV) D DEV^BLRAG09F() ;print manifest
  1. .S BLRI=BLRI+1 S @BLRY@(BLRI)=0_U_"Shipping manifest# "_$P(LA7SM,"^",2)_" is available."_$S($P($G(BLREF),U,1)=-1:" Error printing manifest# "_$P(LA7SM,U,2)_".",1:"")_U_$G(BLRTSTL)_U_$G(BLRNTAL)_U_$P(LA7SM,U,1)_U_$P(LA7SM,U,2)_U
  1. .S BLRTXT="" F S BLRTXT=$O(BLRTXT(BLRTXT)) Q:BLRTXT="" S BLRI=BLRI+1 S @BLRY@(BLRI)=BLRTXT(BLRTXT)_"|"
  1. D CLEANUP^BLRAG09
  1. Q
  1. ;
  1. TARPC(BLRY,BLRSC,BLRSM) ;RPC to return tests that can be added to a manifest
  1. ; BLR MANIFEST TESTS TO ADD
  1. ;INPUT:
  1. ; BLRSCFG = Shipping Configuration pointer to the
  1. ; LAB SHIPPING CONFIGURATION file 62.9
  1. ; BLRSM = Shipping Manifest pointer to the LAB SHIPPING MANIFEST
  1. ; file 62.8
  1. ;RETURNS:
  1. ; TEST_ON_MANIF ^ ADDABLE_TESTS
  1. ; TESTS_ON_MANIF = List of tests on manifest separated by pipe:
  1. ; TEST_IEN:TEST_NAME:TEST_SPEC_PTR|...
  1. ; TEST_IEN = pointer to LABORATORY TEST file 60
  1. ; TEST_NAME = Text from NAME field in
  1. ; LABORATORY TEST file 60
  1. ; TEST_SPECIMEN_PTR = Specimen pointer
  1. ; pointer to SPECIMENS multiple of
  1. ; LAB SHIPPING MANIFEST file 62.8
  1. ; BLRPDFN = patient IEN pointer to the VA Patient file 2
  1. ; BLRPNAM = patient name
  1. ; CONFIG_NAM = Shipping Configuration Name
  1. ; CONFIG_IEN = pointer to file 62.9
  1. ; ADDABLE_TESTS = List of tests that can be added separated by pipe:
  1. ; TEST_IEN_":"_TEST_NAME_":"_UID_":"_EXT_ACC_#_":"_AREA_":"_DATE_":"_
  1. ; ACC_#|...
  1. ; TEST_IEN = pointer to LABORATORY TEST file 60
  1. ; TEST_NAME = Text from NAME field in LABORATORY TEST file 60
  1. ; UID = Test Unique ID
  1. ; EXT_ACC_# = External accession number
  1. ; AREA = area pointer into file 68
  1. ; DATE = date pointer into file 68
  1. ; ACC_# = accession # pointer into file 68
  1. ; PAT_DFN = Patient IEN pointer to the VA Patient file 2
  1. ; PAT_NAM = Patient name
  1. ; CONFIG_NAM = Shipping Configuration Name
  1. ; CONFIG_IEN = pointer to file 62.9
  1. N BLRI
  1. D ^XBKVAR S X="ERROR^BLRAGUT",@^%ZOSF("TRAP")
  1. S BLRI=0
  1. K ^TMP("BLRAG",$J)
  1. S BLRY=$$TMPGLB^BLRAGUT()
  1. S @BLRY@(0)="ERROR_ID"
  1. N BLRNTAL,BLRTSTL
  1. S BLRTSTL=""
  1. I '$D(^LAHM(62.9,BLRSC)) S @BLRY@(0)=1_U_"Invalid SHIPPING CONFIGURATION pointer passed in." Q
  1. I '$D(^LAHM(62.8,BLRSM)) S @BLRY@(0)=1_U_"Invalid SHIPPING MANIFEST pointer passed in." Q
  1. I BLRSC'=$P(^LAHM(62.8,BLRSM,0),U,2) S @BLRY@(0)=1_U_"Manifest does not belong to given Configuration." Q
  1. D MTL^BLRAG09A(.BLRTSTL,BLRSM) ;get tests already on manifest
  1. S BLRNTAL=$$TA^BLRAG09B(BLRSC,BLRSM) ;get test that can be added to manifest
  1. ; 0 1
  1. S @BLRY@(0)="TESTS_ON_MANIF^ADDABLE_TESTS"
  1. S BLRI=BLRI+1 S @BLRY@(BLRI)=BLRTSTL_U_BLRNTAL
  1. Q
  1. ;
  1. TA(BLRSC,BLRSM) ;return tests that can be added to a manifest
  1. ;INPUT:
  1. ; BLRSC = Shipping Configuration pointer to the
  1. ; LAB SHIPPING CONFIGURATION file 62.9
  1. ; BLRSM = Shipping Manifest pointer to the LAB SHIPPING MANIFEST
  1. ; file 62.8
  1. ;RETURNS:
  1. ; List of Tests and data accumulated in BLRRET that can be added
  1. ; to the Manifest
  1. ; OR -- 1^error_message
  1. ; List of test pointers separated by pipe:
  1. ; TEST_IEN_":"_TEST_NAME_":"_UID_":"_EXT_ACC_#_":"_AREA_":"_DATE_":"
  1. ; _ACC_#|...
  1. ; TEST_IEN = pointer to LABORATORY TEST file 60
  1. ; TEST_NAME = Text from NAME field in LABORATORY TEST file 60
  1. ; UID = Test Unique ID
  1. ; EXT_ACC_# = External accession number
  1. ; AREA = area pointer into file 68
  1. ; DATE = date pointer into file 68
  1. ; ACC_# = accession # pointer into file 68
  1. ; PAT_DFN = Patient IEN pointer to the VA Patient file 2
  1. ; PAT_NAM = Patient name
  1. ; CONFIG_NAM = Shipping Configuration Name
  1. ; CONFIG_IEN = pointer to file 62.9
  1. ;
  1. N BLRAA,BLRAD,BLRAN,BLRAT
  1. N BLRACN,BLRAD,BLRAN,BLRAT,BLRAT0,BLRMF,BLRSC60,BLRSCTI,BLRSMF,BLRSMT0,BLRTF,BLRTNAM,BLRUID
  1. N LA7I
  1. S (BLRRET,BLRSC60)=""
  1. S BLRMF=0
  1. S BLRSC=+$G(BLRSC)
  1. S BLRSM=+$G(BLRSM)
  1. Q:'$D(^LAHM(62.9,BLRSC)) 1_U_"Invalid SHIPPING CONFIGURATION pointer passed in."
  1. Q:'$D(^LAHM(62.8,BLRSM)) 1_U_"Invalid SHIPPING MANIFEST pointer passed in."
  1. Q:BLRSC'=$P(^LAHM(62.8,BLRSM,0),U,2) 1_U_"Manifest does not belong to given Configuration."
  1. S BLRSCN=$P($G(^LAHM(62.9,BLRSC,0)),U,1)
  1. S BLRAA=0 F S BLRAA=$O(^LRO(68,BLRAA)) Q:BLRAA'>0 D
  1. .;S BLRAD=$$FMADD^XLFDT($P($$NOW^XLFDT(),".",1),-90) F S BLRAD=$O(^LRO(68,BLRAA,1,BLRAD)) Q:BLRAD'>0 D
  1. .F BLRLP=90:-1:0 D Q:$E(BLRAD,4,7)="0000" ;only go back 90 days
  1. ..S BLRNOW=$P($$NOW^XLFDT(),".",1)
  1. ..S BLRAREAL=BLRAA_":"_$S(BLRLP'=0:$$FMADD^XLFDT(BLRNOW,-BLRLP),1:BLRNOW)_":1:9999999"
  1. ..K LA7AA
  1. ..D ADATE^BLRAG09
  1. ..I $D(LA7AA) S BLRAD=$P($G(LA7AA(BLRAA)),U,1) Q:BLRAD="" D
  1. ...S BLRAN=0 F S BLRAN=$O(^LRO(68,BLRAA,1,BLRAD,1,BLRAN)) Q:BLRAN'>0 D
  1. ....Q:$P($G(^LRO(68,BLRAA,1,BLRAD,1,BLRAN,0)),"^",2)=62.3 ;skip controls
  1. ....S BLRACN=$P($G(^LRO(68,BLRAA,1,BLRAD,1,BLRAN,.2)),"^",1)
  1. ....S BLRUID=$P($G(^LRO(68,BLRAA,1,BLRAD,1,BLRAN,.3)),"^",1)
  1. ....Q:BLRUID=""
  1. ....S BLRLRDFN=$P($G(^LRO(68,BLRAA,1,BLRAD,1,BLRAN,0)),U,1)
  1. ....Q:BLRLRDFN=""
  1. ....S BLRPDFN=$P($G(^LR(+BLRLRDFN,0)),U,3) ;get patient DFN
  1. ....S BLRPNAM=$P($G(^DPT(+BLRPDFN,0)),U,1) ;get patient NAME
  1. ....S BLRAT=0 F S BLRAT=$O(^LRO(68,BLRAA,1,BLRAD,1,BLRAN,4,BLRAT)) Q:BLRAT'>0 D ;BLRAT subscript is also the pointer to file 60
  1. .....S BLRAT0=^LRO(68,BLRAA,1,BLRAD,1,BLRAN,4,BLRAT,0)
  1. .....Q:$P(BLRAT0,U,5) ;skip if test already completed
  1. .....S BLRSCT=$O(^LAHM(62.9,BLRSC,60,"B",BLRAT,0))
  1. .....Q:BLRSCT="" ;quit if test not found in Shipping Configuration
  1. .....S BLRSC60=$G(^LAHM(62.9,BLRSC,60,BLRSCT,0)) ;check accession area match
  1. .....Q:BLRAA'=$P(BLRSC60,U,2)
  1. .....;
  1. .....S BLRTF=0
  1. .....I $P(BLRAT0,U,10)'="" S BLRTF=$$TAA($P(BLRAT0,U,10),BLRUID,BLRAT) ;SAT NOV 16, 2012: if there is already a previous manifest in the accession, see if it has been 'removed'
  1. .....Q:BLRTF
  1. .....S BLRTF=$$TAA(BLRSM,BLRUID,BLRAT) ;SAT NOV 16, 2012: if THIS test is already on THIS manifest, see if it has been 'removed'
  1. .....Q:BLRTF
  1. .....Q:$P($G(^LRO(68,BLRAA,1,BLRAD,1,BLRAN,9)),"^") ;quit if rollover accession - current accession date is another date
  1. .....;
  1. .....;D TAM
  1. .....S BLRTNAM=$P($G(^LAB(60,BLRAT,0)),U,1),BLRRET=$S(BLRRET'="":BLRRET_"|",1:"")_BLRAT_":"_BLRTNAM_":"_+$G(BLRUID)_":"_BLRACN_":"_BLRAA_":"_BLRAD_":"_BLRAN_":"_BLRPDFN_":"_BLRPNAM_":"_BLRSCN_":"_BLRSC
  1. ;S:BLRRET="" BLRRET=1_U_"No tests to add."
  1. Q BLRRET
  1. ;
  1. TAA(BLRSM,BLRUID,BLRAT) ;look for test on manifest
  1. S BLRTF=0
  1. Q:'+$P($G(^LAHM(62.8,BLRSM,0)),U,3) ;quit if manifest is not active
  1. S LA7I=0 F S LA7I=$O(^LAHM(62.8,+BLRSM,10,"UID",+$G(BLRUID),LA7I)) Q:'LA7I D Q:BLRTF=1
  1. .N X
  1. .S X(0)=$G(^LAHM(62.8,+BLRSM,10,LA7I,0))
  1. .S:($P(X(0),"^",2)=BLRAT)&($P(X(0),"^",8)'=0) BLRTF=1 ;Test already on shipping manifest and has not been previously removed
  1. Q BLRTF