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

TIUCOPR1.m

Go to the documentation of this file.
TIUCOPR1 ;SLC/TDP - Copy/Paste Report ; Sep 22, 2025@15:36:20
 ;;1.0;TEXT INTEGRATION UTILITIES;**290,338,369**;Jun 20, 1997;Build 4
 ;
 ; Reference to $$GET1^DIQ, GETS^DIQ in ICR #2056
 ; Reference to ^DPT( in ICR #10035
 ; Reference to ^GMR(123 in ICR #2586
 ; Reference to ^LRT(67 in ICR #3260
 ; Reference to ^OR(100 in ICR #5771
 ; Reference to ^VA(200, in ICR #10060
 ; Reference to ^DIC(4 in ICR #10090
 ; Reference to $$FMTE^XLFDT in ICR #10103
 ; Reference to $$NOW^XLFDT in ICR #10103
 ; Reference to DEM^VADPT, KVA^VADPT in ICR #10061
 ; Reference to ^XMD in ICR #10070
 ;
 Q
DETAILQ ;Detail Report (QUEUED)
 ;CLIN, DIV, DUZ, EDT, PROV, QUEUE, RUNDT, SDT, AND SRC EXIST FROM TIUCOPR QUEUE
 D DETAIL1(.CLIN,.DIV,DUZ,EDT,.PROV,RUNDT,SDT,SRC,QUEUE)
 Q
 ;
DETAIL(CLIN,DIV,DUZ,EDT,PROV,RUNDT,SDT,SRC) ;Detail Report (NO QUEUE)
 D DETAIL1(.CLIN,.DIV,DUZ,EDT,.PROV,RUNDT,SDT,SRC,0)
 Q
 ;
DETAIL1(CLIN,DIV,DUZ,EDT,PROV,RUNDT,SDT,SRC,QUEUE) ;Detail Report
 N APCT,CLNLOC,CPYDATA0,CPYDFN,CPYDT,CPYDUZ,CPYGBL,CPYIEN,CPYNAME,CPYOUT
 N CPYPKG,CPYPTNAME,CPYPTSRC,CPYSRC,CPYUSER,DFN,DTPST,ENDT,IEN,LNCNT,LPDT
 N PDT,MIACPY,MIAPST,NOGO,NOTPAT,PARNT,PDIV,PDIVNM,PDIVS,PNVST,PNVST0
 N PRVIEN,PRVNM,PSTDFN,PSTDT,PSTIEN,PSTNAME,PSTNT,PSTNT0,PSTPTNAME
 N PSTUSER,RSLT,STDT,STRTDT,TIU0,TIU12,TIU13,TIUC0,TIUC12,TIUC13,TIUOUT,VA
 N VADM
 I $G(RUNDT)="" S RUNDT=$$NOW^XLFDT
 W !,"PASTE DATE/TIME^PN PATIENT^PASTE NOTE (PN)^PN DATE/TIME^PN AUTHOR^COPY SOURCE (CS)^CS AUTHOR"
 S ENDT=EDT+.999999
 S (LPDT,STDT)=SDT-.000001
 S STRTDT=9999999-LPDT
 F  S LPDT=$O(^TIUP(8928,"B",LPDT)) Q:((LPDT="")!(LPDT>ENDT))  D
 . S IEN=""
 . F  S IEN=$O(^TIUP(8928,"B",LPDT,IEN)) Q:IEN=""  D
 .. S (PSTPTNAME,PSTNAME,PARNT)=""
 .. S (MIACPY,MIAPST,NOGO)=0
 .. S PSTNT0=$G(^TIUP(8928,IEN,0))
 .. I PSTNT0="" Q
 .. S PARNT=$P(PSTNT0,U,11)
 .. I PARNT'="",PARNT'=IEN Q
 .. S DTPST=$P(PSTNT0,U,1)
 .. S PRVIEN=+$P(PSTNT0,U,2)
 .. I +PROV>0,'$D(PROV(PRVIEN)) Q
 .. S PRVNM=""
 .. I PRVIEN>0 S PRVNM=$$GET1^DIQ(200,PRVIEN,.01)
 .. S PDIV=+$P(PSTNT0,U,3)
 .. I +DIV>0,'$D(DIV(PDIV)) Q
 .. S PDIVS=PDIV_","
 .. K RSLT
 .. D GETS^DIQ(4,PDIVS,".01;99","","RSLT")
 .. S PDIVNM=$G(RSLT(4,PDIVS,.01))
 .. S PDIVNM=PDIVNM_" ("_$G(RSLT(4,PDIVS,99))_")"
 .. S CPYIEN=+$P(PSTNT0,U,6)
 .. S CPYPKG=+$P(PSTNT0,U,7)
 .. I CPYIEN>0,CPYPKG=0 S CPYPKG=8925
 .. S CPYSRC=$S(CPYPKG=8925:"T",CPYPKG=100:"O",CPYPKG=123:"C",1:"")
 .. I CPYSRC'="",SRC'[CPYSRC Q
 .. S APCT=$P(PSTNT0,U,8)
 .. I APCT="" S APCT="??"
 .. S CPYNAME=""
 .. S CPYOUT=""
 .. S CPYUSER=""
 .. S CPYPTNAME=""
 .. S CPYDUZ=""
 .. S CPYDFN=""
 .. S CPYGBL=""
 .. S PSTUSER=""
 .. S PSTNT=+$P(PSTNT0,U,4)
 .. I '$D(^TIU(8925,PSTNT,0)) Q
 .. S TIU0=$G(^TIU(8925,PSTNT,0))
 .. S TIU12=$G(^TIU(8925,PSTNT,12))
 .. S TIU13=$G(^TIU(8925,PSTNT,13))
 .. S NOTPAT=0
 .. I MIAPST'=1 D  Q:NOTPAT
 ... S PSTIEN=+$P(TIU12,U,2) ;AUTHOR/DICTATOR
 ... I PSTIEN=0 S PSTIEN=+$P(TIU13,U,2) ;ENTERED BY
 ... S PSTUSER=$S(PSTIEN>0:$$GET1^DIQ(200,PSTIEN,.01),1:"")
 ... S PSTDFN=+$P(TIU0,U,2)
 ... I +PSTDFN>0 D
 .... S DFN=+PSTDFN
 .... D DEM^VADPT
 .... S PSTPTNAME=$E($G(VADM(1)),1,20)_" ("_$G(VA("BID"))_")"
 .... D KVA^VADPT ;Cleans up VADPT variables including VA("BID") and VA("PID")
 ... S PSTDT=$P(TIU13,U,1)
 ... S PSTNAME=$P(TIU0,U,1)
 ... S PSTNAME=$P($G(^TIU(8925.1,PSTNAME,0)),U,1)
 .. S CLNLOC=+$P(TIU12,U,5)
 .. I +CLIN>0,'$D(CLIN(CLNLOC)) Q
 .. I CPYIEN=0,CPYPKG=0 D  Q:SRC'[CPYSRC
 ... S CPYOUT=$P(PSTNT0,U,10)
 ... S CPYNAME=$P(CPYOUT,";",2)
 ... S CPYPTNAME=$P(CPYOUT,";",3)
 ... I (CPYNAME["Outside of")!(CPYNAME["Percent Match fell below threshold") D
 .... S CPYSRC=$S(CPYNAME["Outside of":"X",1:"E")
 ... I $P(CPYNAME," - ",1)="ORDER DETAILS" D
 .... S CPYIEN=+$P($P(CPYNAME," - ",2),";",1)
 .... S CPYPKG="100",CPYSRC="O"
 ... I $P(CPYNAME," - ",1)'="ORDER DETAILS" D
 .... I $P(CPYOUT,";",4)'="" S CPYUSER=$P(CPYOUT,";",3)
 .. I CPYPKG="8925" D  Q:MIACPY=1
 ... I '$D(^TIU(8925,CPYIEN)) S MIACPY=1 Q
 ... S TIUC0=$G(^TIU(8925,CPYIEN,0))
 ... S TIUC12=$G(^TIU(8925,CPYIEN,12))
 ... S TIUC13=$G(^TIU(8925,CPYIEN,13))
 ... S CPYDUZ=+$P(TIUC12,U,2) ;AUTHOR/DICTATOR
 ... I CPYDUZ=0 S CPYDUZ=+$P(TIUC13,U,2) ;ENTERED BY
 ... S CPYUSER=$S(CPYDUZ>0:$$GET1^DIQ(200,CPYDUZ,.01),1:"")
 ... S CPYDATA0=$G(TIUC0)
 ... S CPYDT=$P(TIUC13,U,1)
 ... S CPYNAME=+$P(CPYDATA0,U,1)
 ... S CPYNAME=$S(CPYNAME>0:$P($G(^TIU(8925.1,CPYNAME,0)),U,1),1:"")
 ... S CPYDFN=+$P(CPYDATA0,U,2)
 ... S CPYPTNAME=$S(CPYDFN>0:$P($G(^DPT(CPYDFN,0)),U,1),1:"")
 .. I CPYPKG="100" D
 ... S CPYDATA0=$G(^OR(100,CPYIEN,0))
 ... S CPYDT=$P(CPYDATA0,U,7)
 ... S CPYDUZ=+$P(CPYDATA0,U,6) ;WHO ENTERED
 ... S CPYUSER=$S(CPYDUZ>0:$$GET1^DIQ(200,CPYDUZ,.01),1:"")
 ... S CPYNAME="ORDER #"_$S(CPYDATA0'="":$P(CPYDATA0,U,1),CPYIEN>0:CPYIEN,1:"")
 ... S CPYDFN=$P(CPYDATA0,U,2) ;ORDERABLE ITEMS (PATIENT/REFERRAL)
 ... I +CPYDFN>0 D
 .... S CPYGBL=$P(CPYDFN,";",2)
 .... S CPYDFN=+CPYDFN
 ... I CPYGBL="DPT(" S CPYPTNAME=$S(+CPYDFN>0:$P($G(^DPT(CPYDFN,0)),U,1),1:"")
 ... I CPYGBL="LRT(67," S CPYPTNAME=$S(+CPYDFN>0:$$GET1^DIQ(67,CPYDFN_",",.01),1:"")
 .. I CPYPKG="123" D
 ... S CPYDATA0=$G(^GMR(123,CPYIEN,0))
 ... S CPYDT=$P(CPYDATA0,U,1)
 ... S CPYDUZ=+$P(CPYDATA0,U,14) ;SENDING PROVIDER
 ... S CPYUSER=$S(CPYDUZ>0:$$GET1^DIQ(200,CPYDUZ,.01),1:"")
 ... I CPYDUZ<1,$P($G(^GMR(123,CPYIEN,12)),U,6)'="" S CPYUSER=$P($G(^GMR(123,CPYIEN,12)),U,6),CPYDUZ="IFC"
 ... S CPYNAME="CONSULT #"_CPYIEN
 ... S CPYDFN=+$P(CPYDATA0,U,2) ;PATIENT NAME (IEN)
 ... S CPYPTNAME=$S(CPYDFN>0:$P($G(^DPT(CPYDFN,0)),U,1),1:"")
 .. S TIUOUT=$S(+DTPST>0:$$FMTE^XLFDT(DTPST,7),0:"")_U_PSTPTNAME_U_PSTNAME_U_$S(+PSTDT>0:$$FMTE^XLFDT(PSTDT,7),1:"")_U_PSTUSER_U_CPYNAME_U_CPYUSER
 .. I $L(TIUOUT)>255 D
 ... S $P(TIUOUT,U,3)=$E(PSTNAME,1,40)
 ... I $L(TIUOUT)'>255 Q
 ... S $P(TIUOUT,U,6)=$E(CPYNAME,1,40)
 .. W !,TIUOUT
 .. Q
 . Q
 I QUEUE D MSG(.CLIN,.DIV,DUZ,EDT,.PROV,RUNDT,SDT,SRC)
 Q
MSG(CLIN,DIV,DUZ,EDT,PROV,RUNDT,SDT,SRC) ;Send mail message to user who ran report
 ;IO,IOST are device related arrays/variables
 N LNCNT,TIUDT,TXT,XMDUZ,XMSUB,XMTEXT,XMY,XMMG,XMSTRIP,XMROU,DIFROM,XMYBLOB,XMZ
 S XMY(DUZ)=""
 S XMTEXT="TXT("
 S TIUDT=$$FMTE^XLFDT(RUNDT,1)
 S XMSUB=TIUDT_" COPY/PASTE TRACKING REPORT COMPLETED"
 S LNCNT=0
 S LNCNT=LNCNT+1,TXT(LNCNT)="The COPY/PASTE TRACKING REPORT run at "_TIUDT_" has completed."
 S LNCNT=LNCNT+1,TXT(LNCNT)=""
 S LNCNT=LNCNT+1,TXT(LNCNT)="Report Parameters:"
 S LNCNT=LNCNT+1,TXT(LNCNT)=""
 S LNCNT=LNCNT+1,TXT(LNCNT)="   Start Date: "_$$FMTE^XLFDT(SDT,5)
 S LNCNT=LNCNT+1,TXT(LNCNT)="    Stop Date: "_$$FMTE^XLFDT(EDT,5)
 S LNCNT=LNCNT+1,TXT(LNCNT)="  Division(s): "
 I DIV=0 S TXT(LNCNT)=$G(TXT(LNCNT))_"ALL"
 I DIV>0 D
 . N DIVCNT,DIVNM,DIVIEN
 . S DIVNM=""
 . F  S DIVNM=$O(DIV("B",DIVNM)) Q:DIVNM=""  D
 .. S DIVIEN=0
 .. F  S DIVIEN=$O(DIV("B",DIVNM,DIVIEN)) Q:DIVIEN=""  D
 ... S TXT(LNCNT)=$S($L($G(TXT(LNCNT)))>0:$G(TXT(LNCNT)),1:"               ")_DIVNM_" ("_$G(DIV("B",DIVNM,DIVIEN))_")"
 ... S LNCNT=LNCNT+1
 ... Q
 .. Q
 . S LNCNT=LNCNT-1
 . Q
 S LNCNT=LNCNT+1,TXT(LNCNT)="  Location(s): "
 I CLIN=0 S TXT(LNCNT)=$G(TXT(LNCNT))_"ALL"
 I CLIN>0 D
 . N CLINCNT,CLINNM,CLINIEN
 . S CLINNM=""
 . F  S CLINNM=$O(CLIN("B",CLINNM)) Q:CLINNM=""  D
 .. S CLINIEN=0
 .. F  S CLINIEN=$O(CLIN("B",CLINNM,CLINIEN)) Q:CLINIEN=""  D
 ... S TXT(LNCNT)=$S($L($G(TXT(LNCNT)))>0:$G(TXT(LNCNT)),1:"               ")_CLINNM
 ... S LNCNT=LNCNT+1
 ... Q
 .. Q
 . S LNCNT=LNCNT-1
 . Q
 S LNCNT=LNCNT+1,TXT(LNCNT)="  Provider(s): "
 I PROV=0 S TXT(LNCNT)=$G(TXT(LNCNT))_"ALL"
 I PROV>0 D
 . N PROVCNT,PROVNM,PROVIEN
 . S PROVNM=""
 . F  S PROVNM=$O(PROV("B",PROVNM)) Q:PROVNM=""  D
 .. S PROVIEN=0
 .. F  S PROVIEN=$O(PROV("B",PROVNM,PROVIEN)) Q:PROVIEN=""  D
 ... S TXT(LNCNT)=$S($L($G(TXT(LNCNT)))>0:$G(TXT(LNCNT)),1:"               ")_PROVNM
 ... S LNCNT=LNCNT+1
 ... Q
 .. Q
 . S LNCNT=LNCNT-1
 . Q
 S LNCNT=LNCNT+1,TXT(LNCNT)="    Source(s): "
 I SRC["T",SRC["C",SRC["O",SRC["X",SRC["E" S TXT(LNCNT)=$G(TXT(LNCNT))_"ALL"
 E  D
 . I SRC["T" S TXT(LNCNT)=$S($L($G(TXT(LNCNT)))>0:$G(TXT(LNCNT)),1:"               ")_"T: TIU DOCUMENTS",LNCNT=LNCNT+1
 . I SRC["C" S TXT(LNCNT)=$S($L($G(TXT(LNCNT)))>0:$G(TXT(LNCNT)),1:"               ")_"C: REQUEST/CONSULTATIONS",LNCNT=LNCNT+1
 . I SRC["O" S TXT(LNCNT)=$S($L($G(TXT(LNCNT)))>0:$G(TXT(LNCNT)),1:"               ")_"O: ORDERS",LNCNT=LNCNT+1
 . I SRC["X" S TXT(LNCNT)=$S($L($G(TXT(LNCNT)))>0:$G(TXT(LNCNT)),1:"               ")_"X: OUTSIDE OF CPRS",LNCNT=LNCNT+1
 . I SRC["E" S TXT(LNCNT)=$S($L($G(TXT(LNCNT)))>0:$G(TXT(LNCNT)),1:"               ")_"E: EVERYTHING ELSE"
 . Q
 S LNCNT=LNCNT+1,TXT(LNCNT)="       Device: "_$G(IOST)
 S TXT(LNCNT)=$G(TXT(LNCNT))_$S($G(IO("DOC"))'="":" ("_$G(IO("DOC")),$G(IO("HFSIO"))'="":" ("_$G(IO("HFSIO")),1:"")
 D ^XMD
 Q