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

LRMLED.m

Go to the documentation of this file.
  1. LRMLED ;BPFO/DTG - NTRT MESSAGE PROCESS AND EDITS UPDATE ;12/26/2016
  1. ;;5.2;LAB SERVICE;**468,500,517**;Sep 27, 1994;Build 5
  1. ;
  1. ; ESTART is called from a 'NEW' format cross reference on the 60 file AMLTFNTRT
  1. ; and will send NTRT message if appropiate.
  1. EN(LRS,LR60IEN) ; entry point from cross reference
  1. ; only have one
  1. L +^TMP(LR60IEN,LRS):1 I '$T Q
  1. N ZTDTH,ZTRTN,ZTSAVE,ZTIO,ZTSK,ZTDESC
  1. ; START OF CHANGE FOR LR*5.2*500
  1. ;S ZTDTH=$$NOW^XLFDT,ZTDESC="LAB Create NTRT message from file 60 Cross Reference #491"
  1. S B=$H,A=$$HADD^XLFDT(B,,8,,),C=$$HTFM^XLFDT(A)
  1. S ZTDTH=C,ZTDESC="LAB Create NTRT message from file 60 Cross Reference #491"
  1. S ZTRTN="ESTART^LRMLED("_LR60IEN_","_LRS_")",ZTSAVE("LR60IEN")="",ZTSAVE("LRS")="",ZTIO="",ZTSAVE("LRDUZ")=DUZ
  1. D ^%ZTLOAD
  1. L -^TMP(LR60IEN,LRS)
  1. Q
  1. ;
  1. ESTART(LR60IEN,LRS) ; pick up key data for NTRT
  1. Q:$D(LRMLTFREC)
  1. L +^TMP(LR60IEN,LRS):30 I '$T Q
  1. ;START OF CHANGE FOR LR*5.2*500
  1. N LXA,LXB,LXC,LXG,LXD,LXE,LXF,LXH,A,B,C,D,LSITE,LRNT,LRNTI,AR,LRNLT,LRSEC,I,LRNOS1,LRNOS2
  1. ;END OF CHANGE FOR LR*5.2*500
  1. N LRSITE,LRSITEN,LRGMAIL,LRSMAIL,LRNAMIL,LACT,MAILPERSON,LR64,LRCOM,LRCTY,LRSUBSCRIPT
  1. N LRSCHPA,LRSCHNM,ALI,LRTEXT,LR64N,LRDTNM,G
  1. S:$G(LRDUZ)="" LRDUZ=$G(DUZ)
  1. I $G(DT)="" S DT=$$DT^XLFDT
  1. D GET664
  1. ; check if allow to send to NTRT
  1. ; I $G(LRNTI(.1,"I"))'=1 G EOUT
  1. ;
  1. ;site number and name
  1. S LRSITE=$G(LRNTI(.01,"I")),LRSITEN=$G(LRNTI(.01,"E"))
  1. ;ntrt mail group
  1. S LRNMAIL=$G(LRNTI(1,"I"))
  1. ;lab send mail group
  1. S LRGMAIL=$G(LRNTI(2,"I"))
  1. ;lab server side mail group
  1. S LRSMAIL=$G(LRNTI(3,"I"))
  1. ;how to send mail
  1. S LACT=$G(LRNTI(.02,"E"))
  1. ; get type of test to send
  1. S LRSUBSCRIPT=$G(LRNTI(.07,"I")) I LRSUBSCRIPT="" S LRSUBSCRIPT=1 ; default to CH only
  1. ; send blood bank?
  1. ;
  1. S DA=+LR60IEN
  1. ;get test
  1. EA ; .01 test name, 4 subscript (CH), 5 data name, 13 field (DD of 5), 64.1 result nlt code
  1. S DIQ="LXB",DIQ(0)="IE",DIC=60,DR=".01;4;64.1;5;13;131;132;133;134;135;137" K ^UTILITY("DIQ1",$J) D EN^DIQ1 K ^UTILITY("DIQ1",$J)
  1. K LXA M LXA=LXB(60,DA) K LXB
  1. D TDT
  1. ; check test subscript is valid for NTRT
  1. S A=$G(LXA(4,"I"))
  1. I A="WK" G EOUT ; don't send if workload
  1. I A="AU" G EOUT
  1. I A="EM" G EOUT
  1. I A="BB" G EOUT
  1. I A="CH"&((LRSUBSCRIPT=1)!(LRSUBSCRIPT=7)!(LRSUBSCRIPT=8)) G EGOOD
  1. I A="MI"&((LRSUBSCRIPT=2)!(LRSUBSCRIPT=7)!(LRSUBSCRIPT=8)) G EGOOD
  1. ; I A="EM"&((LRSUBSCRIPT=3)!(LRSUBSCRIPT=8)) G EGOOD ; do not do AU per Leeanne 6/2016
  1. I A="SP"&((LRSUBSCRIPT=4)!(LRSUBSCRIPT=8)) G EGOOD
  1. I A="CY"&((LRSUBSCRIPT=5)!(LRSUBSCRIPT=8)) G EGOOD
  1. ; I A="AU"&((LRSUBSCRIPT=6)!(LRSUBSCRIPT=8)) G EGOOD ; do not do AU per Leeanne 6/2016
  1. G EOUT ; doesn't match up
  1. ;
  1. EGOOD ; if the subscript is valid
  1. ; check if inactive
  1. S A=$G(LXA(132,"I")),B=$G(LXA(133,"I")) I A'=""!(B'="") G EOUT
  1. ;get synonyms
  1. K B S LXG="",A=0 F I=0:1 S A=$O(^LAB(60,DA,5,A)) Q:'A S B(I)=$P(^LAB(60,DA,5,A,0),U,1)
  1. I I>0 S B=I-1 F I=0:1:B D I $L(LXG)>210 Q
  1. . I LXG="" S LXG=B(I) Q
  1. . S LXG=LXG_U_B(I)
  1. ;get nlt number
  1. S LR64=$G(LXA(64.1,"I")),(LRNLT,LRSEC)="",LR64N=$G(LXA(64.1,"E"))
  1. I LR64'="" S LRNLT=$G(^LAM(LR64,0)),A=$P(LRNLT,U,15),LRNLT=$P(LRNLT,U,2)
  1. I A'="" S LRSEC=$P($G(^LAB(64.21,A,0)),U,2)
  1. ;get comment / data type from comment
  1. S (LRCOM,LRCTY,LRDTNM)="",A=$G(LXA(13,"I")),LRDTNM=$P($G(LXA(5,"I")),";",2)
  1. I A'="" S B=$$ETSTTYP(A),LRCOM=$P(B,"|",1),LRCTY=$P(B,"|",2) S:$P(B,"|",3)'="" LRDTNM=LRDTNM_" - "_$P(B,"|",3)
  1. ;START OF CHANGE FOR LR*5.2*500
  1. ; get the performing labs
  1. D LIST^DIC(60.16,","_DA_",","@;.01;1","",,,,,,,"LXB")
  1. K LXH M LXH=LXB("DILIST","ID") K LXB
  1. ;END OF CHANGE FOR LR*5.2*500
  1. ; get specimen info
  1. ES ; LRS is passed in and is the specimen IEN
  1. S DIQ="LXB",DIQ(0)="IE",DIC=60,DR=100,DA=+LR60IEN K LXB,^UTILITY("DIQ1",$J)
  1. S DR(60.01)=".01;6;1;2;9.2;9.3;13;30;32;33;34;35",DA(60.01)=LRS
  1. D EN^DIQ1 K ^UTILITY("DIQ1",$J)
  1. K LXC M LXC=LXB("60.01",LRS) K LXB
  1. ; get the specimen INTERPRETATION
  1. D GETS^DIQ(60.01,LRS_","_DA,"5.5","","LXB")
  1. K LXE M LXE=LXB(60.01,LRS_","_DA_",",5.5) K LXB
  1. ; don't do if MLTF already associated
  1. I $G(LXC(30,"I"))'="" G EOUT
  1. ; don't do if inactive or already sent
  1. S A=$G(LXC(32,"I")),B=$G(LXC(33,"I")),C=$G(LXC(34,"I")) I $E(A,1)="Y"!(B'="")!($E(C,1)="Y") G EOUT
  1. ;if no send method or not allowed to send to NTRT
  1. ;START OF CHANGE FOR LR*5.2*500
  1. S LRNOS1=0 I LACT=""!($G(LRNTI(.02,"I"))="N")!($G(LRNTI(.1,"I"))'=1) S LRNOS1=1
  1. ;END OF CHANGE FOR LR*5.2*500
  1. S A=$TR(LRGMAIL,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  1. S LRNOS2=0 I '$$PROD^XUPROD()!(LRGMAIL'["DOMAIN.EXT") S LRNOS2=1
  1. I LACT=""!($E(LACT,1)="N") D MAILMAN G EOUT
  1. D @LACT
  1. ;put exception flag in 60 file
  1. ; since making exception flag uneditable must do physical set
  1. ;START OF CHANGE FOR LR*5.2*500
  1. ;I (LRNOS1'=1&(LRNOS2'=1)) D ;<
  1. G:'$G(^LAB(60,LR60IEN,1,LRS,0)) EOUT ; p517 exit if missing 0 node rec for SITE/SPECIMEN
  1. N A,B,LRO,LRN,I S A=$G(^LAB(60,LR60IEN,1,LRS,5)),B=A,$P(B,U,3)="Y",^LAB(60,LR60IEN,1,LRS,5)=B
  1. ; need to build array for saving in audit section
  1. F I=1,2,4 S LRO(I)="",LRN(I)=""
  1. S LRO(3)=$P(A,U,3),LRN(3)=$P(B,U,3)
  1. N ZTDTH,ZTRTN,ZTSAVE,ZTIO,ZTSK,ZTDESC
  1. S ZTDTH=$$NOW^XLFDT,ZTDESC="LAB Edit Save of Deployed Flag"
  1. S ZTRTN="SEDA^LRMLED("_LRS_","_LR60IEN_")",ZTSAVE("LR60IEN")="",ZTSAVE("LRS")=""
  1. S ZTSAVE("LRN(")="",ZTSAVE("LRO(")=""
  1. S ZTIO=""
  1. D ^%ZTLOAD
  1. ;END OF CHANGE FOR LR*5.2*500
  1. G EOUT
  1. ;
  1. MAILMAN ;mailman
  1. N XMSUB,XMY,XMTEXT,LRTEXT,XMDUZ,DA,DR,DIE
  1. ;
  1. I LRNMAIL="" Q ; missing NTRT recipient
  1. ;
  1. S XMSUB="NEW NTRT REQUEST FOR LABORATORY"
  1. ;S XMY(DUZ)=""
  1. S XMY(LRDUZ)=""
  1. ; send to NTRT if ntrt mail group and send method and production/va site
  1. I LRNMAIL'="" S XMY(LRNMAIL)="" I LRNOS1=1!(LRNOS2=1) K XMY(LRNMAIL)
  1. ;
  1. I LRGMAIL'="" S XMDUZ("New Test/Specimen NTRT Request From: "_$E(LRSITEN,1,30))="",XMY($P(LRGMAIL,"@",1))=""
  1. S ALI=0
  1. I LRNOS1=1!(LRNOS2=1) D ;<
  1. . S ALI=$$LRTP(ALI),LRTEXT(ALI)="*** THIS TEST/SPECIMEN WAS NOT SENT TO NTRT ***"
  1. . S A="" S:LRNOS1=1 A="Missing Send Method" S A=A_$S((LRNOS2=1&(A'="")):" and ",1:""),A=A_$S(LRNOS2=1:"Facility is Either Not Production or Not a VA Site",1:"")
  1. . S ALI=$$LRTP(ALI),LRTEXT(ALI)=A
  1. . S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="A new Laboratory Test has been entered at: "_LRSITEN
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Facility Name/Number: "_LRSITEN_" / "_LRSITE
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="For questions or notifications respond to: "_LRGMAIL
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. ; S LRTEXT(6)="For NTRT results respond to :"_LRSMAIL
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. I $G(LRRESEND)=1 S ALI=$$LRTP(ALI),LRTEXT(ALI)=" **** THIS TEST/SPECIMEN IS BEING RESENT ****"
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="New Laboratory Test Name: "_$G(LXA(.01,"I"))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="New Laboratory Test LOCAL IEN: "_(+LR60IEN)
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Laboratory Test Site/Specimen Number (IEN): "_$G(LXC(.01,"I"))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Laboratory Test Site/Specimen Name: "_$G(LXC(.01,"E"))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S B="",A=$G(LXC(.01,"I")) I A S A=$G(^LAB(61,A,0)),B=$P(A,U,10) I +B>0 S B=$P($G(^LAB(64.061,B,0)),U,1)
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Spec: "_$P(A,U,1)
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Time Aspect: "_B
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Units: "_$G(LXC(6,"I"))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="RNLT: "_LRNLT
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Lab Section: "_LRSEC
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Subscript: "_$G(LXA(4,"I"))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Data Name: "_LRDTNM
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Data Comment: "_LRCOM
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Data Type: "_LRCTY
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Reference Low: "_$G(LXC(1,"I"))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Reference High: "_$G(LXC(2,"I"))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Therapeutic Low: "_$G(LXC(9.2,"I"))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Therapeutic High: "_$G(LXC(9.3,"I"))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. ; S A=$G(LXC(13,"I")),B=$S(A=1:"YES",1:"NO")
  1. ; S ALI=$$LRTP(ALI),LRTEXT(ALI)="Use Ref Lab: "_B
  1. ; S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Test Synonyms: "_LXG
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. ; F I=10:2:44 S LRTEXT(I)=""
  1. S E=0 F I=1:1 S E=$O(LXE(E)) Q:'E S G=LXE(E),ALI=$$LRTP(ALI),LRTEXT(ALI)=$S(I=1:"Specimen Interpretation: ",1:" ")_G
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. ;START OF CHANGE FOR LR*5.2*500
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Test Creation Date: "_$G(LXA(131,"E"))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Specimen Create Date: "_$G(LXC(35,"E"))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="In-House Test: "_$G(LXA(134,"E"))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="POC Test: "_$G(LXA(135,"E"))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Scanned Image Test: "_$G(LXA(137,"E"))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S E=0 F I=0:1 S E=$O(LXH(E)) Q:'E&I D Q:'E
  1. . S ALI=$$LRTP(ALI),LRTEXT(ALI)="Performing Lab: "_$G(LXH(+E,.01))
  1. . S ALI=$$LRTP(ALI),LRTEXT(ALI)=" Order Code: "_$G(LXH(+E,1))
  1. . S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)="Site Notes:"
  1. N STNTDT S STNTDT=9999999 F S STNTDT=$O(^LAB(60,LR60IEN,11,"B",STNTDT),-1) Q:'STNTDT D
  1. . N STNTIEN,I
  1. . S ALI=$$LRTP(ALI),LRTEXT(ALI)="Site Notes Date: "_$$FMTE^XLFDT(STNTDT)
  1. . S STNTIEN=0 S STNTIEN=$O(^LAB(60,+LR60IEN,11,"B",STNTDT,STNTIEN)) Q:'STNTIEN D S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. . . S I=0 F S I=$O(^LAB(60,+LR60IEN,11,STNTIEN,1,I)) Q:'I D
  1. . . . S ALI=$$LRTP(ALI),LRTEXT(ALI)=$G(^LAB(60,+LR60IEN,11,STNTIEN,1,I,0))
  1. S ALI=$$LRTP(ALI),LRTEXT(ALI)=""
  1. ;END OF CHANGE FOR LR*5.2*500
  1. S XMTEXT="LRTEXT(" D ^XMD
  1. ;
  1. Q
  1. ;
  1. CTCHK(LR60IEN) ; check if the test is valid for create date and it hasn't been set previously
  1. ; is the test valid for update
  1. N A,B,C,LSITE,LRNT
  1. S A=$$GET1^DIQ(60,LR60IEN_",",131)
  1. I A'="" Q 0
  1. S LSITE=$$SITE^VASITE,LSITE=$P(LSITE,U,1)
  1. S LRNT=$O(^LAB(66.4,"B",LSITE,0))
  1. I +LRNT<1 Q 0
  1. S A=$$GET1^DIQ(66.4,LRNT_",",.06)
  1. I A&(A>(LR60IEN-1)) Q 0
  1. Q 1
  1. ;
  1. NSP(LR6001IEN,LR60IEN) ; entry to set specimen date if new specimen
  1. N ZTDTH,ZTRTN,ZTSAVE,ZTIO,ZTSK,ZTDESC,LRN,LRO
  1. ; X1-old array X2-new array
  1. M LRO=X1,LRN=X2
  1. S ZTDTH=$$NOW^XLFDT,ZTDESC="LAB Edit Save from file 60 Cross Reference #490"
  1. S ZTRTN="NSPA^LRMLED("_LR6001IEN_","_LR60IEN_")",ZTSAVE("LR60IEN")="",ZTSAVE("LR6001IEN")=""
  1. S ZTSAVE("LRN(")="",ZTSAVE("LRO(")=""
  1. S ZTIO=""
  1. D ^%ZTLOAD
  1. Q
  1. ;
  1. NSPA(LRDA,LRDA1) ; save specimen create date if new specimen for test
  1. ; (1)-.01 SITE/SPECIMEN
  1. ; LRDA - specimen IEN
  1. ; LRDA1 - test IEN
  1. ; LRO-old array LRN-new array
  1. Q:$D(LRMLTFREC)
  1. N A,B,C,D,E,F,DA
  1. N DR,DIE,DIC,X
  1. I $G(LRO(1))'=""!($G(LRN(1))="") G NSPQ
  1. S DA=LRDA,DA(1)=LRDA1
  1. S A=$$GET1^DIQ(60.01,DA_","_DA(1),35,"I")
  1. I A'="" G NSPQ
  1. I $G(DT)="" S DT=$$DT^XLFDT
  1. S DIE="^LAB(60,"_DA(1)_",1,",DR="35///"_DT
  1. D ^DIE
  1. G NSPQ
  1. ;
  1. NSPQ ; quit
  1. K A,B,C,D,E,F,DA,DR,DIE,DIC,X
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. Q
  1. ;
  1. TDT ;place creation date in test
  1. I $G(LXA(131,"I"))'="" Q ; date already on file
  1. S A=$G(LRNTI(".06","I")) I A&(A>(LR60IEN-1)) Q ; only set if test added after patch 468 load
  1. N DA,DR,DIE
  1. L +^LAB(60,LR60IEN):30 I '$T Q
  1. S DA=+LR60IEN,DR="131///"_DT,DIE="^LAB(60," D ^DIE
  1. L -^LAB(60,LR60IEN)
  1. Q
  1. ;
  1. SDT ; place specimen creation dt
  1. I $G(LXC(35,"I"))'="" Q ; date on file
  1. N DA,DR,DIE
  1. L +^LAB(60,LR60IEN,1,LRS):30 I '$T Q
  1. S DA(1)=+LR60IEN,DA=LRS,DR="35///"_DT,DIE="^LAB(60,"_DA(1)_",1," D ^DIE
  1. L -^LAB(60,LR60IEN,1,LRS)
  1. Q
  1. ;
  1. LRTEXT(AL) ; update counter for message xml
  1. S AL=AL+1
  1. Q AL
  1. ;
  1. HL7 ;send hl7 to NTRT
  1. ; currently not implemented
  1. Q
  1. ;
  1. LRTP(AA) ;update text counter
  1. S AA=AA+1
  1. Q AA
  1. ;
  1. XML ;send xml to NTRT
  1. ; moved to LRMLEDA for size
  1. D XML^LRMLEDA
  1. Q
  1. ;
  1. ;
  1. ETSTTYP(LRX) ; get test data type
  1. N LRSTUB,LRTYPE,LRY,K,KK
  1. I LRX="" Q ""
  1. S K="^"_LRX_"0)",KK=$G(@K),$P(LRSTUB,"|",3)=$P(KK,U,1)
  1. S LRX=$P(LRX,"(",2)
  1. ;
  1. ; Data type
  1. S LRTYPE=$$GET1^DID($P(LRX,","),$P(LRX,",",2,99),"","TYPE")
  1. S $P(LRSTUB,"|",2)=LRTYPE
  1. ;
  1. ; Input transform
  1. S LRY=$$GET1^DID($P(LRX,","),$P(LRX,",",2,99),"",$S(LRTYPE="SET":"POINTER",1:"INPUT TRANSFORM"))
  1. I LRTYPE="NUMERIC",LRY["LRNUM" D
  1. . S LRX=$P(LRY,"""",2)
  1. . I LRX?.1"-".N1","1.N1","1N S LRY="Number from "_$P(LRX,",")_" to "_$P(LRX,",",2)_" with "_$P(LRX,",",3)_" decimal"
  1. . S $P(LRSTUB,"|",1)=LRY
  1. ; Help prompt
  1. I LRTYPE="FREE TEXT" D
  1. . S LRY=$$GET1^DID($P(LRX,","),$P(LRX,",",2,99),"","HELP-PROMPT")
  1. . S $P(LRSTUB,"|",1)=LRY
  1. Q LRSTUB
  1. ;
  1. EOUT ; quit
  1. L -^TMP(LR60IEN,LRS)
  1. K LXA,LXB,LXC,LXD,LXE,LXF,LXG,LXH,A,LR60IEN,DA,DIC,DIQ,B,C,D,LRS,LSITE,LRNT,LRNTI,AR,I,LRMLTFREC
  1. K LRSITE,LRSITEN,LRGMAIL,LRSMAIL,LRNMAIL,LACT,MAILPERSON,LR64,LRNLT,LRSEC,LRCOM,LRCTY,LRNEWTEST,LRSUBSCRIPT
  1. K LRNOS1,LRNOS2,LRSCHPA,LRSCHNM,ALI,LRTEXT,LR64N,LRDTNM,G
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. Q
  1. ;
  1. ; This section is called by the NEW Record cross references in file 60
  1. ; CR 489 for BED (base level edit) and SITE/SPECIMEN sub Level 490 for SED
  1. ;
  1. BED(LR60IEN) ;ENTRY POINT FOR MAIN EDITS
  1. ;
  1. N ZTDTH,ZTRTN,ZTSAVE,ZTIO,ZTSK,ZTDESC,LRN,LRO
  1. M LRO=X1,LRN=X2
  1. S ZTDTH=$$NOW^XLFDT,ZTDESC="LAB Edit Save from file 60 Cross Reference #489"
  1. S ZTRTN="BEDA^LRMLED("_LR60IEN_")",ZTSAVE("LR60IEN")=""
  1. S ZTSAVE("LRN(")="",ZTSAVE("LRO(")=""
  1. S ZTIO=""
  1. D ^%ZTLOAD
  1. Q
  1. ;
  1. BEDA(LRDA) ; edits from main level
  1. Q:$D(LRMLTFREC)
  1. ; (1)-3 TYPE (2)-131 CREATION DATE (3)-133 TEST INACTIVE DATE
  1. ; X1-old array X2-new array
  1. N A,B,C,D,E,F,G,I,DA,LO,LN,LE,LLI,LTYP
  1. M A=DR S D=0
  1. N DR,DIE,DIC,X
  1. F I=1:1:3 S F=$G(LRO(I)),G=$G(LRN(I)) I F'=G S D=1
  1. I 'D G BEDO
  1. F LLI=1:1:3 S LO=$G(LRO(LLI)),LN=$G(LRN(LLI)) I LO'=LN S LTYP=$S(LLI=1:"Y",LLI=2:"C",1:"T") D D SAV
  1. . ; I LTYP="C"!(LTYP="T") S:+LO>0 LO=$$FMTE^XLFDT(LO,9) S:+LN>0 LN=$$FMTE^XLFDT(LN,9)
  1. G BEDO
  1. ;
  1. BEDO K A,B,C,D,E,I,X,DA,LRN,LRO,LO,LN,LE,LLI,DR,DIE,DIC,LRMLTFREC,LTYP
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. Q
  1. ;
  1. SAV ; file edit in 60.28
  1. N DR,DIE,DIC,X,DA,Y,LRMLTFREC,LE
  1. S DA(1)=LRDA,DA=0,LRMLTFREC=1
  1. S LE="^LAB(60,"_DA(1)_",15,",DIC=LE,DIC(0)="QEAL"
  1. S X=$$NOW^XLFDT
  1. L +^LAB(60,DA(1),15):30 I '$T Q
  1. D FILE^DICN
  1. L -^LAB(60,DA(1),15)
  1. I Y="-1" Q
  1. S DIE=LE,DA=+Y
  1. S DR=".02///"_+$G(DUZ)_";.03///"_LTYP_";.04///"_LO_";.05///"_LN
  1. D ^DIE
  1. K DR,DIE,DIC,X,DA,Y,LRMLTFREC,LE
  1. Q
  1. ;
  1. SED(LR6001IEN,LR60IEN) ;ENTRY POINT FOR MAIN SITE/SPECIMEN EDITS
  1. ;
  1. N ZTDTH,ZTRTN,ZTSAVE,ZTIO,ZTSK,ZTDESC,LRN,LRO
  1. M LRO=X1,LRN=X2
  1. S ZTDTH=$$NOW^XLFDT,ZTDESC="LAB Edit Save from file 60 Cross Reference #490"
  1. S ZTRTN="SEDA^LRMLED("_LR6001IEN_","_LR60IEN_")",ZTSAVE("LR60IEN")="",ZTSAVE("LR6001IEN")=""
  1. S ZTSAVE("LRN(")="",ZTSAVE("LRO(")=""
  1. S ZTIO=""
  1. D ^%ZTLOAD
  1. Q
  1. ;
  1. SEDA(LRDA,LRDA1) ; edits from site/specimen level
  1. ; (1)-30 MLTF VUID (2)-RESULT/SPECIMEN INACTIVE DATE (3)-EXCEPTION FLAG (4)-SPECIMEN CREATE DATE
  1. ; X1-old array X2-new array
  1. Q:$D(LRMLTFREC)
  1. N A,B,C,D,E,F,DA,LLI,LTYP
  1. M A=DR
  1. N DR,DIE,DIC,X
  1. S D="" F I=1:1:4 S E=$G(LRO(I)),F=$G(LRN(I)) I E'=F S D=1
  1. I 'D G BEDO
  1. F LLI=1:1:4 S LO=$G(LRO(LLI)),LN=$G(LRN(LLI)) I LO'=LN S LTYP=$S(LLI=1:"M",LLI=2:"R",LLI=3:"E",1:"S") D D SSAV
  1. . ; I LTYP="R"!(LTYP="S") S:+LO>0 LO=$$FMTE^XLFDT(LO,9) S:+LN>0 LN=$$FMTE^XLFDT(LN,9)
  1. G BEDO
  1. Q
  1. ;
  1. SSAV ; file edit in 60.28
  1. N DR,DIE,DIC,X,DA,Y,LRMLTFREC,LE
  1. S DA(1)=LRDA1,DA=0,LRMLTFREC=1
  1. S LE="^LAB(60,"_DA(1)_",15,",DIC=LE,DIC(0)="QEAL"
  1. S X=$$NOW^XLFDT
  1. L +^LAB(60,DA(1),15):30 I '$T Q
  1. D FILE^DICN
  1. L -^LAB(60,DA(1),15)
  1. I Y="-1" Q
  1. S DIE=LE,DA=+Y
  1. S DR=".02///"_+$G(DUZ)_";.03///"_LTYP_";.04///"_LO_";.05///"_LN_";.06///"_LRDA
  1. D ^DIE
  1. K DR,DIE,DIC,X,DA,Y,LRMLTFREC,LE
  1. Q
  1. ;
  1. GET664 ; get file 66.4 info
  1. S LSITE=$$SITE^VASITE,LSITE=$P(LSITE,U,1)
  1. S LRNT=$O(^LAB(66.4,"B",LSITE,0))
  1. D GETS^DIQ(66.4,LRNT_",","**","IE","AR")
  1. M LRNTI=AR("66.4",LRNT_",") K AR
  1. Q
  1. ;
  1. GET60T ; get top of file 60 test info
  1. S DIQ="LXB",DIQ(0)="IE",DIC=60,DR=".01;131" K ^UTILITY("DIQ1",$J) D EN^DIQ1 K ^UTILITY("DIQ1",$J)
  1. K LXA M LXA=LXB(60,DA) K LXB
  1. Q
  1. ;