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

BTPWPFND.m

Go to the documentation of this file.
  1. BTPWPFND ;VNGT/HS/ALA-Find Events for Tracking ; 22 Apr 2008 7:15 PM
  1. ;;1.2;CARE MANAGEMENT EVENT TRACKING;**1**;JUL 07,2017;Build 5
  1. ;
  1. ;
  1. EN(JOB) ;EP - Entry point
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BTPWPFND D UNWIND^%ZTER"
  1. NEW PRCN,TGLOB,USER,TMFRAME,TXN,ERROR
  1. ; Clean up superceded records
  1. NEW STAT,DA,DIK
  1. S STAT="S",DA="",DIK="^BTPWQ("
  1. F S DA=$O(^BTPWQ("AC",STAT,DA)) Q:DA="" D ^DIK
  1. ;
  1. S PRCN=0,TGLOB=$NA(^XTMP("BTPWPRC"))
  1. S JOB=$G(JOB,"")
  1. S USER=$S(JOB="Nightly":JOB_" ",1:"Initial ")_"job"
  1. NEW BTPWUP
  1. S BTPWUP(90628,"1,",.06)=$$NOW^XLFDT()
  1. S BTPWUP(90508,"1,",24.11)=$G(ZTSK)
  1. D FILE^DIE("","BTPWUP","ERROR")
  1. K @TGLOB
  1. S @TGLOB@(0)=$$FMADD^XLFDT(DT,1)_U_DT_U_"CMET Find Events"
  1. F S PRCN=$O(^BTPW(90621,PRCN)) Q:'PRCN D
  1. . I $P(^BTPW(90621,PRCN,0),U,3)'="" Q
  1. . S TXN=0
  1. . F S TXN=$O(^BTPW(90621,PRCN,1,TXN)) Q:'TXN D
  1. .. NEW DA,IENS,TAX,FRN,FREF,ORD,UID,TREF,GREF,MOD,FIELD,RFILE,MN,MCD,MDF,OPER,AN,MD
  1. .. NEW TFILE
  1. .. S DA(1)=PRCN,DA=TXN,IENS=$$IENS^DILF(.DA),ORD=1
  1. .. S TAX=$$GET1^DIQ(90621.01,IENS,.01,"E")
  1. .. S FRN=$$GET1^DIQ(90621.01,IENS,.03,"I")
  1. .. I FRN'="" D
  1. ... NEW FILE,FIELD
  1. ... S FREF=$$GET1^DIQ(90621.1,FRN_",",.02,"I")
  1. ... S ORD=$$GET1^DIQ(90621.1,FRN_",",.05,"E")
  1. ... S FIELD=$$GET1^DIQ(90621.1,FRN_",",.03,"E")
  1. ... S TFILE=$$GET1^DIQ(90621.1,FRN_",",.08,"I")
  1. ... S RFILE=$$GET1^DID(FREF,FIELD,"","SPECIFIER"),RFILE=$$STRIP^XLFSTR(RFILE,"ABCDEFGHIJKLMNOPQRSTUVWXYZ*'")
  1. .. ; Check for modifiers
  1. .. I $O(^BTPW(90621,PRCN,1,TXN,1,0))'="" S MD=0 D
  1. ... F S MD=$O(^BTPW(90621,PRCN,1,TXN,1,MD)) Q:'MD D
  1. .... S MCD=$P(^BTPW(90621,PRCN,1,TXN,1,MD,0),U,1),OPER=$P(^BTPW(90621,PRCN,1,TXN,1,MD,0),U,2)
  1. .... S MDF=$O(^AUTTCMOD("B",MCD,""))
  1. .... I MDF'="" S MOD(MDF)=OPER
  1. .. ;
  1. .. S UID=$J,TREF=$NA(^TMP("BQITAX",UID)),GREF=$$ROOT^DILFD(FREF,"",1)
  1. .. K @TREF
  1. .. S TYPE="" S:$G(TFILE)=60 TYPE="L"
  1. .. D BLD^BQITUTL(TAX,TREF,TYPE)
  1. .. ;
  1. .. S TIEN=0 F S TIEN=$O(@TREF@(TIEN)) Q:'TIEN D
  1. ... S IEN=""
  1. ... F S IEN=$O(@GREF@("B",TIEN,IEN),-1) Q:IEN="" D
  1. .... ; if a bad record (no zero node), quit
  1. .... I $G(@GREF@(IEN,0))="" Q
  1. .... ; get patient record
  1. .... S DFN=$$GET1^DIQ(FREF,IEN,.02,"I") Q:DFN=""
  1. .... I $P($G(^DPT(DFN,.35)),U,1)'="" Q
  1. .... ;I '$$HRN^BQIUL1(DFN),'$$VTHR^BQIUL1(DFN) Q
  1. .... I '$$HRN^BQIUL1(DFN) Q
  1. .... ; get the visit information
  1. .... S VISIT=$$GET1^DIQ(FREF,IEN,.03,"I")\1 Q:VISIT=""
  1. .... ; if the visit is deleted, quit
  1. .... I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. .... ; if the visit has no dependents, quit
  1. .... I $$GET1^DIQ(9000010,VISIT,.09,"I")=0 Q
  1. .... S VSDTM=$P($G(^AUPNVSIT(VISIT,0)),U,1)\1 Q:VSDTM=0
  1. .... Q:"DXCTI"[$P(^AUPNVSIT(VISIT,0),U,7)
  1. .... I $D(MOD)>0 S QFL=0,MN=0 D Q:QFL
  1. ..... NEW BTJ
  1. ..... F S MN=$O(MOD(MN)) Q:MN="" D Q:QFL
  1. ...... S OPER=MOD(MN)
  1. ...... F BTJ=.08,.09 I $$GET1^DIQ(FREF,IEN,BTJ,"I")="" S QFL=2
  1. ...... F BTJ=.08,.09 I $$GET1^DIQ(FREF,IEN,BTJ,"I")=MN,OPER="E" S QFL=1
  1. ...... F BTJ=.08,.09 I $$GET1^DIQ(FREF,IEN,BTJ,"I")=MN,OPER="I" S QFL=0
  1. .... S BTPWIEN=$O(^BWPCD("AD",VISIT,""))
  1. .... I BTPWIEN'="",$P($G(^BWPCD(BTPWIEN,"PCC")),U,2)'=IEN S BTPWIEN=""
  1. .... ; Check Mastectomy for bilateral, unilateral or unspecified
  1. .... I PRCN=36,$D(@TGLOB@(DFN,25,VSDTM)) Q
  1. .... I PRCN=46,$D(@TGLOB@(DFN,25,VSDTM))!($D(@TGLOB@(DFN,36,VSDTM))) Q
  1. .... S @TGLOB@(DFN,PRCN,VSDTM,ORD,VISIT,IEN)=BTPWIEN_U_FREF_U_$P(^DIC(FREF,0),U,1)
  1. ;
  1. S DFN=""
  1. F S DFN=$O(@TGLOB@(DFN)) Q:DFN="" D
  1. . S PIEN=""
  1. . F S PIEN=$O(^BWPCD("C",DFN,PIEN)) Q:PIEN="" D
  1. .. S PROC=$P(^BWPCD(PIEN,0),U,4)
  1. .. S PRCN=$O(^BTPW(90621,"AP",PROC,"")) I PRCN="" S PRCN="~"
  1. .. I PRCN'="~",$P(^BTPW(90621,PRCN,0),U,3)'="" Q
  1. .. S PRCDTM=$P(^BWPCD(PIEN,0),U,3)
  1. .. I PRCDTM="" S PRCDTM=$P(^BWPCD(PIEN,0),U,12)
  1. .. S PRCDTM=PRCDTM\1,ORD=1
  1. .. S FREF=$P(^BWPN(PROC,0),U,12),FILE="" I FREF'="" S FILE=$P(^DIC(FREF,0),U,1)
  1. .. I FREF="" D
  1. ... I $P(^BWPCD(PIEN,0),U,15)'="" S FILE="V RADIOLOGY" Q
  1. ... I PROC=40 S FILE="V LAB"
  1. .. I FREF'="" S FRN=$O(^BTPW(90621.1,"B",FILE,""))
  1. .. I $G(FRN)'="" S ORD=$$GET1^DIQ(90621.1,FRN_",",.05,"E")
  1. .. S VISIT=$P($G(^BWPCD(PIEN,"PCC")),U,1),IEN=$P($G(^BWPCD(PIEN,"PCC")),U,2)
  1. .. I $$UP^XLFSTR($$GET1^DIQ(9002086.1,PIEN_",",.05,"E"))["ERROR" D Q
  1. ... S:VISIT="" VISIT="~" S:IEN="" IEN="~"
  1. ... ;I '$D(^BTPWQ("C",DFN,PRCN,VISIT,IEN,FRN)) Q
  1. ... I '$D(^BTPWQ("D",DFN,PRCN,VSDTM)) Q
  1. ... NEW QIEN,DA,DIK
  1. ... S QIEN=$O(^BTPWQ("C",DFN,PRCN,VISIT,IEN,FRN,"")) I QIEN="" Q
  1. ... I $P(^BTPWQ(QIEN,0),U,8)="P" S DA=QIEN,DIK="^BTPWQ(" D ^DIK
  1. .. I IEN'="",$$GET1^DIQ(FREF,IEN_",",.03,"I")'=VISIT D
  1. ... S VISIT=$$GET1^DIQ(FREF,IEN_",",.03,"I")
  1. ... I $$GET1^DIQ(FREF,IEN_",",.01,"E")="" S IEN=""
  1. .. S:VISIT="" VISIT="~" S:IEN="" IEN="~"
  1. .. S @TGLOB@(DFN,PRCN,PRCDTM,ORD,VISIT,IEN,PROC)=PIEN_U_FREF_U_FILE
  1. ;
  1. ; Check against Radiology file
  1. D RAD
  1. ;
  1. STOR ; Store the records found
  1. NEW DFN,BCT,BQARRAY
  1. S DFN=0
  1. F S DFN=$O(@TGLOB@(DFN)) Q:DFN="" D
  1. . K BQARRAY
  1. . D CHK(DFN,.BQARRAY)
  1. . S BCT=""
  1. . F S BCT=$O(BQARRAY(BCT)) Q:BCT="" D
  1. .. NEW PRCN,TMFRAME,VSDTM,VISIT,RIEN,FREF,RARPT,WHIEN,FRIL,FREF,ACCN,ENDT
  1. .. S PRCN=$P(BQARRAY(BCT),U,1)
  1. .. S TMFRAME=$P($G(^BTPW(90621,PRCN,5)),U,4),ENDT=""
  1. .. I TMFRAME'="" S TMFRAME="T-"_TMFRAME,ENDT=$$DATE^BQIUL1(TMFRAME)
  1. .. S VSDTM=$P(BQARRAY(BCT),U,6)
  1. .. S VISIT=$P(BQARRAY(BCT),U,2)
  1. .. S RIEN=$P(BQARRAY(BCT),U,7)
  1. .. S FREF=$P(BQARRAY(BCT),U,4)
  1. .. S RARPT=$P(BQARRAY(BCT),U,8)
  1. .. S WHIEN=$P(BQARRAY(BCT),U,3)
  1. .. S FRIL="~"
  1. .. I FREF'="" S FRIL=$O(^BTPW(90621.1,"C",FREF,""))
  1. .. I FRIL="" S FREF=$P(BQARRAY(BCT),U,5) I FREF'="" S FRIL=$O(^BTPW(90621.1,"B",FREF,""))
  1. .. ; Check for existence of the record already in the queue file
  1. .. I DFN'="",PRCN'="",VSDTM'="",$D(^BTPWQ("D",DFN,PRCN,VSDTM)) Q
  1. .. ;I DFN'="",PRCN'="",VISIT'="",RIEN'="",FRIL'="",$D(^BTPWQ("C",DFN,PRCN,VISIT,RIEN,FRIL)) Q
  1. .. ;
  1. .. I TMFRAME'="",VSDTM<ENDT Q
  1. .. ;
  1. .. ; Check if the visit has been merged to another visit
  1. .. I $P($G(^AUPNVSIT(VISIT,0)),U,37)'="" S VISIT=$P($G(^AUPNVSIT(VISIT,0)),U,37),MVSDTM=$P($G(^AUPNVSIT(VISIT,0)),U,1)\1
  1. .. I DFN'="",PRCN'="",$G(MVSDTM)'="",$D(^BTPWQ("D",DFN,PRCN,MVSDTM)) Q
  1. .. I DFN'="",PRCN'="",VSDTM'="",$D(^BTPWQ("D",DFN,PRCN,VSDTM)) Q
  1. .. ;I DFN'="",PRCN'="",VISIT'="",RIEN'="",FRIL'="",$D(^BTPWQ("C",DFN,PRCN,VISIT,RIEN,FRIL)) Q
  1. .. ;
  1. .. I FREF=9000010.09 D
  1. ... I RIEN'="~",RIEN'="" S ACCN=$P($G(^AUPNVLAB(RIEN,0)),U,6)
  1. ... I $G(ACCN)'="",$E(ACCN,1,2)="WH" S WHIEN=$O(^BPWCD("B",$E(ACCN,3,$L(ACCN)),"")) I WHIEN'="" S ACCN=""
  1. .. ;
  1. .. NEW DIC,DLAYGO,X,Y,IEN,BTPUPD,PXSEC
  1. .. S DIC="^BTPWQ(",DIC(0)="LMNZ",DLAYGO=90629,DIC("P")=DLAYGO
  1. .. S X=PRCN
  1. .. K DO,DD D FILE^DICN
  1. .. S IEN=+Y
  1. .. S BTPUPD(90629,IEN_",",.02)=DFN,BTPUPD(90629,IEN_",",.03)=VSDTM
  1. .. S BTPUPD(90629,IEN_",",.04)=VISIT,BTPUPD(90629,IEN_",",.05)=RIEN
  1. .. S BTPUPD(90629,IEN_",",.06)=FRIL,BTPUPD(90629,IEN_",",.07)=$$NOW^XLFDT()
  1. .. S BTPUPD(90629,IEN_",",.09)=WHIEN,BTPUPD(90629,IEN_",",.1)=RARPT
  1. .. S BTPUPD(90629,IEN_",",.15)=$G(ACCN)
  1. .. S BTPUPD(90629,IEN_",",.08)="P",BTPUPD(90629,IEN_",",.12)=USER
  1. .. S BTPUPD(90629,IEN_",",.13)=$$CAT^BTPWPDSP(PRCN,1),BTPUPD(90629,IEN_",",.11)=$$NOW^XLFDT()
  1. .. S BTPUPD(90629,IEN_",",.16)=$$GET1^DIQ(9000010,VISIT_",",.06,"I")
  1. .. ;
  1. .. K ACCN,WHIEN
  1. .. ; Check for exceptions
  1. .. S PSEX=$P($G(^BTPW(90621,PRCN,5)),U,1)
  1. .. I PSEX'="" D
  1. ... I $P(^DPT(DFN,0),U,2)'=PSEX S BTPUPD(90629,IEN_",",.08)="E"
  1. .. D FILE^DIE("","BTPUPD","ERROR")
  1. .. ;I $D(ERROR) D ERR Q
  1. .. ;
  1. .. ; Check to supercede previously existing record
  1. .. NEW PIEN,BTPUPD
  1. .. S PIEN=""
  1. .. F S PIEN=$O(^BTPWQ("AD",DFN,PIEN)) Q:PIEN="" D
  1. ... I $P(^BTPWQ(PIEN,0),U,1)'=PRCN Q
  1. ... I PIEN=IEN Q
  1. ... I $P(^BTPWQ(PIEN,0),U,8)="P" D
  1. .... S BTPUPD(90629,PIEN_",",.08)="S"
  1. .... D FILE^DIE("","BTPUPD","ERROR")
  1. .. ;
  1. .. ; Check for possible match with future followup
  1. .. NEW TIEN
  1. .. S TIEN=""
  1. .. F S TIEN=$O(^BTPWP("AE",DFN,"F",TIEN)) Q:TIEN="" D
  1. ... I $P(^BTPWP(TIEN,0),U,1)'=PRCN Q
  1. ... S BTPUPD(90629,IEN_",",1.01)=TIEN
  1. ... D FILE^DIE("","BTPUPD","ERROR")
  1. ;
  1. ; Clean up events that could have been changed by a change in a taxonomy or other
  1. NEW DFN,PIEN,EVNT,STAT,VDATE
  1. S DFN=""
  1. F S DFN=$O(^BTPWQ("AD",DFN)) Q:DFN="" D
  1. . S PIEN=""
  1. . F S PIEN=$O(^BTPWQ("AD",DFN,PIEN)) Q:PIEN="" D
  1. .. S EVNT=$P(^BTPWQ(PIEN,0),U,1),STAT=$P(^(0),U,8),VDATE=$P(^(0),U,3)
  1. .. ; If event exists for this patient, quit
  1. .. I $D(^XTMP("BTPWPRC",DFN,EVNT,VDATE)) Q
  1. .. ; if someone tracked the event, have to quit
  1. .. I STAT="T" Q
  1. .. ; delete queued record if not found
  1. .. NEW DA,DIK
  1. .. S DIK="^BTPWQ(",DA=PIEN D ^DIK
  1. ;
  1. ; Clean up merged visits
  1. D ^BTPWPFNC
  1. ;
  1. NEW BTPWUP
  1. S BTPWUP(90628,"1,",.07)=$$NOW^XLFDT()
  1. S BTPWUP(90508,"1,",24.11)="@"
  1. D FILE^DIE("","BTPWUP","ERROR")
  1. K BCT,BQARRAY,BTPWIEN,CT,DA,DFN,DIC,DLAYGO,FILE,FREF,FRIL,FRN,IEN
  1. K ORD,PIEN,PRCDTM,PROC,PSEX,QFL,RADATA,RAIEN,RARPN,RARPT,RDIEN,RDTM
  1. K RDTM,REF,RIEN,RPRCN,STAT,TAX,TIEN,VFL,VISIT,VSDTM,WHIEN,WIEN,X,Y
  1. K @TREF,TREF
  1. Q
  1. ;
  1. ERR ;
  1. D ^%ZTER
  1. NEW Y,ERRDTM
  1. S Y=$$NOW^XLFDT() X ^DD("DD") S ERRDTM=Y
  1. S BMXSEC="Recording that an error occurred at "_ERRDTM
  1. Q
  1. ;
  1. CHK(DFN,ARRAY) ;EP - Take raw data for a patient and refine to one most recent procedure
  1. S CT=0,TGLOB=$NA(^XTMP("BTPWPRC")) K ARRAY
  1. S PRCN=""
  1. F S PRCN=$O(@TGLOB@(DFN,PRCN)) Q:PRCN="" D
  1. . I PRCN="~" Q
  1. . K BWH,BREC
  1. . S VSDTM=$O(@TGLOB@(DFN,PRCN,""),-1) Q:VSDTM="" D
  1. .. S ORD=""
  1. .. S ORD=$O(@TGLOB@(DFN,PRCN,VSDTM,ORD)) Q:ORD="" D Q:'QFL
  1. ... S VISIT="",QFL=1
  1. ... F S VISIT=$O(@TGLOB@(DFN,PRCN,VSDTM,ORD,VISIT)) Q:VISIT="" D Q:'QFL
  1. .... S RIEN="",STAT="",RARPT=""
  1. .... F S RIEN=$O(@TGLOB@(DFN,PRCN,VSDTM,ORD,VISIT,RIEN)) Q:RIEN="" D Q:'QFL
  1. ..... S WHIEN="",BREC(VSDTM)=RIEN
  1. ..... I $G(@TGLOB@(DFN,PRCN,VSDTM,ORD,VISIT,RIEN))="" D
  1. ...... S WIEN=$O(@TGLOB@(DFN,PRCN,VSDTM,ORD,VISIT,RIEN,""))
  1. ...... S WHIEN=$P(@TGLOB@(DFN,PRCN,VSDTM,ORD,VISIT,RIEN,WIEN),U,1)
  1. ...... S REF=$P(@TGLOB@(DFN,PRCN,VSDTM,ORD,VISIT,RIEN,WIEN),U,2,3)
  1. ...... S RARPT=$P(@TGLOB@(DFN,PRCN,VSDTM,ORD,VISIT,RIEN,WIEN),U,4)
  1. ..... I $G(@TGLOB@(DFN,PRCN,VSDTM,ORD,VISIT,RIEN))'="" D
  1. ...... S WHIEN=$P(@TGLOB@(DFN,PRCN,VSDTM,ORD,VISIT,RIEN),U,1)
  1. ...... S REF=$P(@TGLOB@(DFN,PRCN,VSDTM,ORD,VISIT,RIEN),U,2,3)
  1. ...... S RARPT=$P(@TGLOB@(DFN,PRCN,VSDTM,ORD,VISIT,RIEN),U,4)
  1. .... ;
  1. .... I WHIEN'="" D
  1. ..... I VISIT'="~" Q
  1. ..... S BWH(VSDTM)=WHIEN
  1. ..... S STAT=$P(^BWPCD(WHIEN,0),U,14)
  1. ..... S RARPT=$P(^BWPCD(WHIEN,0),U,15)
  1. ..... I RARPT="" D Q
  1. ...... I VISIT="~" S VISIT=$P($G(^BWPCD(WHIEN,"PCC")),U,1),RIEN=$P($G(^BWPCD(WHIEN,"PCC")),U,2)
  1. ..... S RARPN=$O(^RARPT("B",RARPT,"")) I RARPN="" Q
  1. ..... I $P($G(^RARPT(RARPN,0)),U,2)'=$P($G(^BWPCD(WHIEN,0)),U,2) Q
  1. ..... S RDTM=0
  1. ..... F S RDTM=$O(^RADPT(DFN,"DT",RDTM)) Q:RDTM="AP"!(RDTM="") D
  1. ...... S RPRCN=0
  1. ...... F S RPRCN=$O(^RADPT(DFN,"DT",RDTM,"P",RPRCN)) Q:'RPRCN D
  1. ....... I $P($G(^RADPT(DFN,"DT",RDTM,"P",RPRCN,0)),U,17)'=RARPN Q
  1. ....... NEW DA,IENS
  1. ....... S DA(2)=DFN,DA(1)=RDTM,DA=RPRCN,IENS=$$IENS^DILF(.DA)
  1. ....... I $$GET1^DIQ(70.03,IENS,3,"E")="CANCELLED" Q
  1. ....... I $$GET1^DIQ(70.03,IENS,3,"E")="" Q
  1. ....... S VISIT=$P($G(^RADPT(DFN,"DT",RDTM,"P",RPRCN,"PCC")),U,3)
  1. ....... S RIEN=$P($G(^RADPT(DFN,"DT",RDTM,"P",RPRCN,"PCC")),U,2) I RIEN="" Q
  1. ....... I $G(^AUPNVRAD(RIEN,0))="" Q
  1. ....... I $P(^AUPNVRAD(RIEN,0),U,3)'=VISIT S VISIT=$P(^AUPNVRAD(RIEN,0),U,3)
  1. .... I VISIT="" S QFL=1,VISIT="~" Q
  1. .... I WHIEN="",$D(BWH(VSDTM)) S WHIEN=BWH(VSDTM) K BWH
  1. .... I RIEN="",$D(BREC(VSDTM)) S RIEN=BREC(VSDTM) K BREC
  1. .... S CT=CT+1,ARRAY(CT)=PRCN_U_VISIT_U_WHIEN_U_REF_U_VSDTM_U_RIEN_U_RARPT,QFL=0
  1. Q
  1. ;
  1. RAD ; Radiology procedures
  1. ; VFL is the reference for CPT files. Searching all CPT taxonomies against the RAD/NUC MED PROCEDURES for
  1. ; matching CPT codes.
  1. ;
  1. S VFL=5,PRCN=""
  1. F S PRCN=$O(^BTPW(90621,"AC",VFL,PRCN)) Q:PRCN="" D
  1. . S PIEN=""
  1. . F S PIEN=$O(^BTPW(90621,"AC",VFL,PRCN,PIEN)) Q:PIEN="" D
  1. .. S TAX=$P(^BTPW(90621,PRCN,1,PIEN,0),"^",1)
  1. .. S UID=$J,TREF=$NA(^TMP("BQITAX",UID))
  1. .. K @TREF
  1. .. D BLD^BQITUTL(TAX,TREF)
  1. .. S TIEN=""
  1. .. F S TIEN=$O(@TREF@(TIEN)) Q:TIEN="" D
  1. ... ; if the CPT code is not found in the RAD/NUC MED PROCEDURES file, quit
  1. ... I '$D(^RAMIS(71,"D",TIEN)) Q
  1. ... S RAIEN=""
  1. ... F S RAIEN=$O(^RAMIS(71,"D",TIEN,RAIEN)) Q:RAIEN="" D
  1. .... ; For every radiology patient (since there is no specific cross-reference by procedure)
  1. .... S DFN=0
  1. .... F S DFN=$O(^RADPT(DFN)) Q:'DFN D
  1. ..... S RDTM=""
  1. ..... F S RDTM=$O(^RADPT(DFN,"DT","AP",RAIEN,RDTM)) Q:RDTM="" D
  1. ...... S RDIEN=""
  1. ...... F S RDIEN=$O(^RADPT(DFN,"DT","AP",RAIEN,RDTM,RDIEN)) Q:RDIEN="" D
  1. ....... S FRN=$O(^BTPW(90621.1,"B","V RADIOLOGY",""))
  1. ....... I FRN'="" S ORD=$$GET1^DIQ(90621.1,FRN_",",.05,"E")
  1. ....... S RADATA=$G(^RADPT(DFN,"DT",RDTM,"P",RDIEN,"PCC"))
  1. ....... NEW DA,IENS
  1. ....... S DA(2)=DFN,DA(1)=RDTM,DA=RDIEN,IENS=$$IENS^DILF(.DA)
  1. ....... I $$GET1^DIQ(70.03,IENS,3,"E")="CANCELLED" Q
  1. ....... I $$GET1^DIQ(70.03,IENS,3,"E")="" Q
  1. ....... S RARPN=$P($G(^RADPT(DFN,"DT",RDTM,"P",RDIEN,0)),U,17)
  1. ....... S RARPT="" I RARPN'="" S RARPT=$P(^RARPT(RARPN,0),U,1)
  1. ....... S PRCDTM=$P(RADATA,U,1)\1
  1. ....... S VISIT=$P(RADATA,U,3)
  1. ....... S IEN=$P(RADATA,U,2) I IEN="" Q
  1. ....... I $G(^AUPNVRAD(IEN,0))="" Q
  1. ....... I $P(^AUPNVRAD(IEN,0),U,3)'=VISIT S VISIT=$P(^AUPNVRAD(IEN,0),U,3)
  1. ....... S:VISIT="" VISIT="~" S:IEN="" IEN="~"
  1. ....... S @TGLOB@(DFN,PRCN,PRCDTM,ORD,VISIT,IEN)=U_"9000010.22"_U_"V RADIOLOGY"_U_RARPT
  1. Q