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

LRBEBA5.m

Go to the documentation of this file.
  1. LRBEBA5 ;DALOI/JAH/FHS - PENDING PANEL ROLLUP TO PCE ;11/26/2005
  1. ;;5.2;LAB SERVICE;**291,337**;Sep 27, 1994;Build 2
  1. ;
  1. EN ;Entry point from LRNIGHT
  1. ;check rollup date
  1. N LRBEROLL,LRBERLDT,DATX,YY,MM,STARTDT,ENDDT,NEWDT,TOTPAN
  1. S LRBEROLL=0,LRBERLDT=$P(^LAB(69.9,1,"VSIT"),U,2)
  1. S YY=$E(LRBERLDT,1,3),MM=+$E(LRBERLDT,4,5)
  1. S MM=$S(MM=1:12,1:MM-1) S YY=$S(MM=12:YY-1,1:YY) I $L(MM)=1 S MM="0"_MM
  1. S STARTDT=YY_MM_"01",ENDDT=YY_MM_"31"_".999999"
  1. S DATX=$O(^LRO(69,"APP",0))
  1. I DATX<STARTDT S STARTDT=DATX-1
  1. I LRBERLDT=DT S LRBEROLL=1
  1. I (LRBERLDT<DT) I DATX<ENDDT S LRBEROLL=1
  1. I LRBEROLL D
  1. .K ^TMP("LRROLLUP",$J)
  1. .S ^TMP("LRROLLUP",$J,0)=$$NOW^XLFDT_"^"
  1. .D START
  1. .D NEWDT
  1. .S ^TMP("LRROLLUP",$J,0)=^TMP("LRROLLUP",$J,0)_$$NOW^XLFDT()
  1. .D MAILRPT
  1. Q
  1. ;
  1. START ;Loop thru pending panel xref in file #69
  1. N LINE,LRXDT,LRODT,LRSN,LRTN
  1. S LINE=100,TOTPAN=0
  1. S LRXDT=STARTDT F S LRXDT=$O(^LRO(69,"APP",LRXDT)) Q:'LRXDT Q:LRXDT>ENDDT D
  1. .S LRODT=0 F S LRODT=$O(^LRO(69,"APP",LRXDT,LRODT)) Q:'LRODT D
  1. ..S LRSN=0 F S LRSN=$O(^LRO(69,"APP",LRXDT,LRODT,LRSN)) Q:'LRSN D
  1. ...S LRTN=0 F S LRTN=$O(^LRO(69,"APP",LRXDT,LRODT,LRSN,LRTN)) Q:'LRTN D
  1. ....D SET
  1. ....I $D(LRBEY)>1 D BAWRK^LRBEBA(LRODT,LRSN,LRTN,.LRBEY,.LRTEST,"","",LRBEROLL)
  1. ....I $D(LRBECPT)>1 D SETRPT
  1. ....D CLEAN
  1. Q
  1. ;
  1. SET ;Setup background variables for call to BAWRK^LRBEBA
  1. N LRBET,LRBEIEN,LRFDA,I,NX,XX
  1. S LRBEIEN=LRSN_","_LRODT_","
  1. S LRDFN=$$GET1^DIQ(69.01,LRBEIEN,.01,"I")
  1. S LRORDER=$$GET1^DIQ(69.01,LRBEIEN,9.5,"I")
  1. S LRBEIEN=LRTN_","_LRSN_","_LRODT_","
  1. I $$GET1^DIQ(69.03,LRBEIEN,8,"I")="CA" D Q
  1. .;clear 'pending panel' xref of not performed panel
  1. .S LRFDA(1,69.03,LRBEIEN,22.1)=0
  1. .D FILE^DIE("KS","LRFDA(1)","ERR")
  1. S LRBETST=$$GET1^DIQ(69.03,LRBEIEN,.01,"I")
  1. I LRBETST="" K ^LRO(69,"APP",LRXDT,LRODT,LRSN,LRTN) Q
  1. S LRAD=+$$GET1^DIQ(69.03,LRBEIEN,2,"I")
  1. S LRAA=+$$GET1^DIQ(69.03,LRBEIEN,3,"I")
  1. S LRAN=+$$GET1^DIQ(69.03,LRBEIEN,4,"I")
  1. S LRUID=$$GET1^DIQ(69.03,LRBEIEN,13,"I")
  1. S LRBECDT=$$GET1^DIQ(69.03,LRBEIEN,22,"I")
  1. S LRBEDFN=$$GET1^DIQ(63,LRDFN,.03,"I")
  1. S LRSS=$$GET1^DIQ(68,LRAA,.02,"I")
  1. I $G(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRBETST,0))="" K ^LRO(69,"APP",LRXDT,LRODT,LRSN,LRTN) Q
  1. S LRIDT=$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,3)),U,5)
  1. S I=$O(^LRO(68,LRAA,1,LRAD,1,LRAN,5,0))
  1. I I S X=^LRO(68,LRAA,1,LRAD,1,LRAN,5,I,0),LRSPEC=$P(X,U,1),LRSAMP=$P(X,U,2)
  1. S NX=0 F S NX=$O(^LAB(60,LRBETST,2,NX)) Q:'NX D
  1. .S LRBET=+^LAB(60,LRBETST,2,NX,0)
  1. .S XX=$P($P(^LAB(60,LRBET,0),U,5),";",2)
  1. .;if null XX, possibly another panel
  1. .I 'XX D ARRS(LRBET,LRBETST) Q
  1. .S LRSB(XX)=$G(^LR(LRDFN,LRSS,LRIDT,XX))
  1. .I LRSB(XX)="" K LRSB(XX) Q
  1. .I "pending^canc"[$P(LRSB(XX),U,1) K LRSB(XX) Q
  1. .I $P(LRSB(XX),U,13) K LRSB(XX) Q
  1. .S LRBEY(LRBETST,XX)=""
  1. I $D(LRBEY)>1 D
  1. .S LRTEST(1)=LRBETST_U_^LAB(60,LRBETST,0),LRTEST(1,"P")=LRBETST_U_$$NLT^LRVER1(LRBETST)
  1. Q
  1. ;
  1. ARRS(XTEST,PTEST) ;
  1. N NX,X,XX
  1. S NX=0 F S NX=$O(^LAB(60,XTEST,2,NX)) Q:'NX D
  1. .S X=+^LAB(60,XTEST,2,NX,0)
  1. .S XX=$P($P(^LAB(60,X,0),U,5),";",2)
  1. .Q:'XX
  1. .S LRSB(XX)=$G(^LR(LRDFN,LRSS,LRIDT,XX))
  1. .I LRSB(XX)="" K LRSB(XX) Q
  1. .I "pending^canc"[$P(LRSB(XX),U,1) K LRSB(XX) Q
  1. .I $P(LRSB(XX),U,13) K LRSB(XX) Q
  1. .S LRBEY(PTEST,XX)=""
  1. Q
  1. ;
  1. CLEAN ;Clean-up variables
  1. K DFN,LRBEY,LRTEST,LRSB,LRBECPT,LRDFN,LRBEDFN,LRORDER
  1. K LRBETST,LRBEVST,LRAA,LRAN,LRAD,LRUID,LRBECDT,LRSS,LRIDT,LRSAMP,LRSPEC
  1. Q
  1. ;
  1. SETRPT ;Set veriables into ^TMP( for report
  1. N SETLN,X,C,N,T,TNM,XCODE,LRPCE,LRBETST,LRBETSTN
  1. S TOTPAN=TOTPAN+1
  1. S SETLN="S LINE=LINE+1,^TMP(""LRROLLUP"",$J,LINE,0)=X"
  1. S LRPCE=$P(^LRO(69,LRODT,1,LRSN,"PCE"),U,1)
  1. Q:LRPCE=""
  1. S LRBETST=$P(LRTEST(1),U,1)
  1. S LRBETSTN=$P(^LAB(60,LRBETST,0),U,1),LRBETSTN="["_LRBETST_"] "_$E(LRBETSTN,1,30)
  1. S X=$$SETSTR^VALM1(LRORDER,"",1,10),X=$$SETSTR^VALM1(LRUID,X,12,10)
  1. S X=$$SETSTR^VALM1(LRPCE,X,26,10),X=$$SETSTR^VALM1(LRBETSTN,X,40,38) X SETLN
  1. S T=0,N=0 F S T=$O(LRBECPT(T)) Q:'T D
  1. . S N=N+1,TNM="["_T_"] "
  1. . I N=1 S X=$$SETSTR^VALM1("CPT Code(s) passed to PCE:","",12,28)
  1. . I N>1 S X=""
  1. . S C=$O(LRBECPT(T,1,0)),XCODE=$P($$CPT^ICPTCOD(C),U,2,3),XCODE=$TR(XCODE,"^"," "),XCODE=$E(XCODE,1,30)
  1. . S XCODE=TNM_XCODE,X=$$SETSTR^VALM1(XCODE,X,40,38) X SETLN
  1. S X=" " X SETLN
  1. Q
  1. ;
  1. NEWDT ;Set new roll-up date
  1. N DD,MM,MM2,X1,X,YY
  1. Q:'$G(LRBERLDT)
  1. S MM=+$E(LRBERLDT,4,5) S MM2=$S(MM=12:1,1:MM+1) S:$L(MM2)=1 MM2="0"_MM2
  1. S DD=$E(LRBERLDT,6,7) S YY=$E(LRBERLDT,1,3) S:+MM2=1 YY=YY+1
  1. S NEWDT=YY_MM2_DD
  1. S X1=NEWDT,X=+$E(NEWDT,4,5),X=$S("^1^3^5^7^8^10^12^"[(U_X_U):31,X'=2:30,$E(X1,1,3)#4:28,1:29)
  1. I $E(X1,6,7)'<X S $E(NEWDT,6,7)=X-1
  1. S $P(^LAB(69.9,1,"VSIT"),U,2)=NEWDT
  1. Q
  1. ;
  1. MAILRPT ;Set intro & send rollup report to mail group
  1. N XMY,XMSUB,XMDUZ,XMTEXT,XMZ,X,X1,Y,SETLN,LINE,DASH
  1. S ENDDT=$P(ENDDT,".",1),X=ENDDT D
  1. .S X1=X,X=+$E(X,4,5),X=$S("^1^3^5^7^8^10^12^"[(U_X_U):31,X'=2:30,$E(X1,1,3)#4:28,1:29)
  1. .I $E(X1,6,7)>X S $E(ENDDT,6,7)=X
  1. S LINE=0,SETLN="S LINE=LINE+1,^TMP(""LRROLLUP"",$J,LINE,0)=X"
  1. S $P(DASH,"-",78)=""
  1. S X=" " X SETLN
  1. S X="Normally, panel tests flagged as 'AMA/Billable' should be reported to PCE" X SETLN
  1. S X="using the CPT Code of the panel. In order for the panel CPT Code to be" X SETLN
  1. S X="sent to PCE, a verified result must be present for each 'required' atomic" X SETLN
  1. S X="test comprising the panel." X SETLN
  1. S X=" " X SETLN
  1. S X="This report provides a listing of AMA/Billable panel tests that were pending" X SETLN
  1. S X="completion on the Lab Roll-up Date. The Sample Collection Date for the" X SETLN
  1. S X="panel test fell within the date range indicated by Start Date and End Date." X SETLN
  1. S X="One or more of the 'required' atomic tests comprising the panel were still" X SETLN
  1. S X="pending on the Lab Roll-up Date. Therefore, those atomic tests that had" X SETLN
  1. S X="been verified have now been sent to PCE. If other atomic tests from the" X SETLN
  1. S X="panels listed are verified later, each will be sent to PCE using the CPT" X SETLN
  1. S X="Code for the atomic test." X SETLN
  1. S X=" " X SETLN
  1. S X=" " X SETLN
  1. S Y=LRBERLDT D DD^%DT S LRBERLDT=Y
  1. S X="Lab Roll-up Date : "_LRBERLDT X SETLN
  1. S Y=NEWDT D DD^%DT S NEWDT=Y
  1. S X="Next Lab Roll-up Date : "_NEWDT X SETLN
  1. S Y=STARTDT D DD^%DT S STARTDT=Y
  1. S X="Start Date : "_STARTDT X SETLN
  1. S Y=ENDDT D DD^%DT S ENDDT=Y
  1. S X="End Date : "_ENDDT X SETLN
  1. S X="Total # Panels : "_TOTPAN X SETLN
  1. S X=" " X SETLN
  1. S X=" " X SETLN
  1. S X=$$SETSTR^VALM1("Unique","",12,10),X=$$SETSTR^VALM1("PCE",X,26,10) X SETLN
  1. S X=$$SETSTR^VALM1("Order #","",1,10),X=$$SETSTR^VALM1("Identifier",X,12,10),X=$$SETSTR^VALM1("Encounter",X,26,10)
  1. S X=$$SETSTR^VALM1("Panel Test",X,40,38) X SETLN
  1. S X=$$SETSTR^VALM1(DASH,"",1,78) X SETLN
  1. S Y=DT D DD^%DT S XMSUB="Report on Roll-up to PCE for "_Y
  1. S XMDUZ=.5
  1. S XMY("G.LMI")=""
  1. S XMTEXT="^TMP(""LRROLLUP"",$J,"
  1. D ^XMD
  1. K ^TMP("LRROLLUP",$J)
  1. Q