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

LRERT1.m

Go to the documentation of this file.
  1. LRERT1 ;DALOI/JDB - STS TEAM UTILITIES ;04/10/12 15:38
  1. ;;5.2;LAB SERVICE;**350**;Sep 27, 1994;Build 230
  1. ;
  1. ; Reference to LABXCPT^HDISVAP1 supported by DBIA #5026
  1. ;
  1. ; ZEXCEPT is used to identify variables which are external to a specific TAG
  1. ; used in conjunction with Eclipse M-editor.
  1. ;
  1. Q
  1. ;
  1. TASK(LRFN,LRIEN) ;
  1. ; Tasks the STS/HDI alert process to ensure FileMan safety.
  1. ; Expects X1 and X2 FileMan arrays from Record based xref.
  1. ; Inputs
  1. ; LRFN: File number
  1. ; LRIEN: IEN
  1. ;
  1. ;ZEXCEPT: X1,X2
  1. ;
  1. N LRTN,LRVARS,LRX,LRVARS,LRX1,LRX2
  1. M LRX1=X1
  1. M LRX2=X2
  1. S LRTN="AERT^LRERT1("_LRFN_","_LRIEN_")"
  1. S LRVARS("LRX1(")="" ;Old values
  1. S LRVARS("LRX2(")="" ;New values
  1. S LRX=$$TASK^LRUTIL(LRTN,"Generate STS alert from xref",.LRVARS,1,$H,"")
  1. Q
  1. ;
  1. ;
  1. AERT(LRFN,LRIEN) ;
  1. ; "AERT" new style xref handler (file #61, 61.2, 62)
  1. ; FileMan safe
  1. ; New style, MUMPS Action, Activity:null, Execution:Record
  1. ; Sequence 1 = .01 Sequence 2 = SNOMED CT
  1. ;PATCH^XPDUTL/10141
  1. ; Inputs
  1. ; LRFN: File number
  1. ; LRIEN: IEN
  1. ; To be 100% FileMan safe, this process should be queued.
  1. ; If this term is already in the alert file ^XTMP("LRSCTX-STS" and the SCT code has not changed, no alert is sent.
  1. ;
  1. ;ZEXCEPT: LRX1,LRX2,ZTQUEUED,ZTREQ
  1. ;
  1. ; Not being added/changed by user so quit
  1. Q:$D(LRFMERTS)
  1. ;
  1. N LRERT,LRNOW,LRTXT
  1. S LRFN=$G(LRFN),LRIEN=$G(LRIEN)
  1. I 'LRFN!('LRIEN) Q
  1. S LRTXT=$G(LRX2(1))
  1. S LRNOW=$$NOW^XLFDT()
  1. S LRERT("FILE")=LRFN
  1. S LRERT("FIEN")=LRIEN
  1. S LRERT("TNUM")=$$TNUM^LRERT(LRFN,LRIEN,LRNOW,3) ;3=local change
  1. S LRERT("SCT")=$G(LRX2(2))
  1. S LRERT("TDT")=LRNOW
  1. S LRERT("STSEXC")=3 ;local change
  1. S LRERT("PREV","TEXT")=$G(LRX1(1))
  1. S LRERT("PREV","SCT")=$G(LRX1(2))
  1. D ;
  1. . N X,X1,X2,Y,DA,DIE,DIC,DIR,D0,DIU,LRX
  1. . S LRX=$$OK2LOG^LRERT(.LRTXT,.LRERT,"LRSCTX-ERT")
  1. . I 'LRX I $P(LRX,"^",2)'=2 Q ;continue if SCT changed
  1. . S LRX=$$LOGIT^LRERT(.LRTXT,.LRERT,"LRSCTX-STS")
  1. . S LRX=$$NOTIFY(.LRTXT,.LRERT)
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. Q
  1. ;
  1. ;
  1. NOTIFY(LRTXT,LRERT) ;
  1. ;
  1. ; Private helper method
  1. ; FileMan safe
  1. ; Handles STS/Local notification for "local edit" new terms.
  1. ; If a new term has been added and not in ^XTMP:
  1. ; 1) alert STS 2) Add entry to ^XTMP 3) Email LAB MAPPING group
  1. ; Inputs
  1. ; LRTXT: Term
  1. ; LRERT:<byref>
  1. ; Outputs
  1. ; String indicating success or error: Status^Error code^text
  1. ; Status: 1=success 0=error
  1. ; ie "0^1^Term is null" "0^4^"STS & MailMan error"
  1. ;
  1. ;ZEXCEPT: LRFIEN,LRFILE,LRSCT,NODE
  1. ;
  1. N DATA,DATA2,LRLCK,STOP,STR,STR2,NOTIFY,SITE
  1. N TNUM,TMPNM,TEXT,I,II,X,Y,LRHDI,LRHDIERR,TSTAT,TDT
  1. N DA,DR,DIE,DIR,DIC,X,X1,X2,Y,DIERR
  1. S LRTXT=$G(LRTXT)
  1. I $TR(LRTXT," ","")="" Q "0^1^Term is null"
  1. S LRFILE=$G(LRERT("FILE")),LRFIEN=$G(LRERT("FIEN")),LRSCT=$G(LRERT("SCT"))
  1. S NOTIFY=1 ;status of this process
  1. S TMPNM="LRSCTX-STS"
  1. S TDT=$G(LRERT("TDT"))
  1. I TDT="" S TDT=$$NOW^XLFDT() S LRERT("TDT")=TDT
  1. ; TSTAT 0=New record 1=Text changed 2=Text same
  1. S TSTAT=$G(LRERT("PREV","TEXT"))'=""
  1. I TSTAT I $G(LRERT("PREV","TEXT"))=LRTXT S TSTAT=2
  1. S TNUM=$G(LRERT("TNUM"))
  1. ;
  1. ; STS Reporting Array
  1. K DATA,LRHDI
  1. S LRHDI(3,1)=TNUM_"^"_TDT
  1. S X=$$BLDERTX^LRERT(LRFILE,LRFIEN,"|",.DATA,2,"S") ;new data
  1. M LRHDI(3,1,"SA")=DATA
  1. ;
  1. ; build a pseudo "before" data
  1. I TSTAT D
  1. . M LRHDI(3,1,"SB")=DATA
  1. . S LRHDI(3,1,"SB",2)=$G(LRERT("PREV","TEXT"))
  1. . S LRHDI(3,1,"SB",5)=$G(LRERT("PREV","SCT"))
  1. . S LRHDI(3,1,"SB",6)="" ;SCT text
  1. . S X=$G(LRERT("PREV","SCT"))
  1. . I X'="" D ;
  1. . . K DATA
  1. . . S X=$$CODE^LRSCT(X,"SCT","","DATA")
  1. . . S LRHDI(3,1,"SB",6)=$G(DATA("F"))
  1. ;
  1. K DATA
  1. ;
  1. S X=$S(TSTAT:"modified in",1:"added to")
  1. S LRHDI(3,1,"TXT")="Term "_X_" file #"_LRFILE_" (entry #"_LRFIEN_")"
  1. ;
  1. D LABXCPT^HDISVAP1("LRHDI")
  1. ; check LRHDI("ERROR") and add error to local email
  1. K LRHDIERR
  1. M LRHDIERR("ERROR")=LRHDI("ERROR")
  1. K LRHDI
  1. I $D(LRHDIERR) S NOTIFY="0^2^HDI error"
  1. ;
  1. ; Update ^XTMP
  1. S LRERT("HDIERR")=$S($D(LRHDIERR):1,1:0)
  1. S X=$$LOGIT^LRERT(LRTXT,.LRERT)
  1. ;
  1. ; Notify local staff of event (G.LAB MAPPING)
  1. N DA,DIE,DIC,DIR,D0,DIFROM,LRMTXT,X,X1,X2,XMDUZ,XMSUB,XMTEXT,XMY,XMZ,XMMG
  1. ;
  1. S XMSUB="Local modification to file (#"_LRFILE_":"_LRFIEN_")"
  1. S X=$S(TSTAT:"modified in",1:"added to")
  1. S LRMTXT(1,0)="Term "_X_" file #"_LRFILE_" (entry #"_LRFIEN_")"
  1. S LRMTXT(2,0)=" "
  1. I TSTAT=1 S LRMTXT(3,0)="Previous Text: "_$G(LRERT("PREV","TEXT"))
  1. S LRMTXT(4,0)=$S('TSTAT:"New Text",1:"Term")_": "_LRTXT
  1. S X=$S(TSTAT:"Modified",1:"Added")
  1. S LRMTXT(5,0)=X_" by: "_$$UP^XLFSTR($$NAME^XUSER(DUZ,"F"))
  1. S LRMTXT(6,0)=" "
  1. S LRMTXT(7,0)="Tracking information below:"
  1. S LRMTXT(8,0)="Transaction date: "_$$FMTE^XLFDT(TDT)
  1. S LRMTXT(9,0)="Transaction number: "_TNUM
  1. S LRMTXT(10,0)="SNOMED CT code: "_$S(LRSCT'="":LRSCT,1:"n/a")
  1. I $G(LRERT("PREV","SCT"))'="" D ;
  1. . S X=LRERT("PREV","SCT")
  1. . I X'=$G(LRERT("SCT")) S LRMTXT(11,0)="Previous SNOMED CT code: "_X
  1. ;
  1. I $D(LRHDIERR) D ;
  1. . S LRMTXT(20,0)=" "
  1. . S LRMTXT(21,0)="An error occurred when notifying STS:"
  1. . S NODE="LRHDIERR(0)"
  1. . S I=$O(LRMTXT("A"),-1)
  1. . F S NODE=$Q(@NODE) Q:NODE="" S I=I+1,LRMTXT(I,0)=" "_NODE
  1. ;
  1. I $$GOTLOCAL^XMXAPIG("LAB MAPPING") S XMY("I:G.LAB MAPPING")=""
  1. E S XMY("I:G.LMI")=""
  1. ;
  1. S XMTEXT="LRMTXT("
  1. D ^XMD
  1. I $D(XMMG)!'$G(XMZ) D ;
  1. . I $D(LRHDIERR) S NOTIFY="0^4^STS & Mailman error" Q
  1. . S NOTIFY="0^3^MailMan error"
  1. ;
  1. ; Update and store this transaction info in the target file.
  1. D SCTUPD
  1. ;
  1. Q NOTIFY
  1. ;
  1. ;
  1. SCTUPD ; Update SCT STATUS DATE multiple
  1. ;
  1. ;ZEXCEPT: LRDUZ,LRFILE,LRFIEN,TDT,TNUM
  1. ;.
  1. N LRERR,LRFDA,LRFLD,LRSUBFILE,LRSTATUS
  1. ;
  1. S LRSUBFILE=$S(LRFILE=61:61.023,LRFILE=61.2:61.223,LRFILE=62:62.023,1:"")
  1. I LRSUBFILE="" Q
  1. ;
  1. ; Store date/time, user and new status
  1. S LRFDA(2,LRSUBFILE,"+2,"_LRFIEN_",",.01)=TDT
  1. S LRSTATUS=$$GET1^DIQ(LRFILE,LRFIEN_",",21,"I")
  1. S LRFDA(2,LRSUBFILE,"+2,"_LRFIEN_",",1)=$S(LRSTATUS'="":LRSTATUS,1:"R")
  1. S LRFDA(2,LRSUBFILE,"+2,"_LRFIEN_",",3)=$S($G(LRDUZ):LRDUZ,1:DUZ)
  1. ;
  1. ; Store transaction number
  1. S LRFDA(2,LRSUBFILE,"+2,"_LRFIEN_",",2)=TNUM
  1. ;
  1. D UPDATE^DIE("","LRFDA(2)","LRFIEN","LRERR(2)")
  1. ;
  1. ; Store execption text in WP field
  1. D WP^DIE(LRSUBFILE,LRFIEN(2)_","_LRFIEN_",",4,"A","LRMTXT","LRERR(3)")
  1. ;
  1. Q