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

BTIULO7.m

Go to the documentation of this file.
  1. BTIULO7 ;IHS/ITSC/LJF - IHS OBJECTS ADDED IN PATCHES;06-Aug-2018 15:33;MGH
  1. ;;1.0;TEXT INTEGRATION UTILITIES;**1001,1002,1003,1004,1005,1006,1007,1009,1010,1012,1013,1020**;NOV 04, 2004;Build 7
  1. ;IHS/CIA/MGH line up number of labs and only display test name
  1. ;Made changes to call ehr 1.1 visit creation
  1. ;Patch 1005 Changed lookup for dates without times
  1. ;Patch 1006 changed lookup for LAST #VITALS for multiple vitals on one day
  1. ;Patch 1006 incorporated reproductive history field changes
  1. ;Patch 1007 fixed total time for visit selection
  1. ;Patch 1009 fixed reproductive history again and last # measurements
  1. ;Patch 1010 added qualifiers
  1. LASTHFC(PAT,CTG,CAP) ;EP - return last factor in category CTG for patient PAT; PATCH 1001
  1. ; CAP = 1 if want caption to be returned; = 0 otherwise
  1. NEW CTGN,HF,HFDT,LIST,RESULT,X
  1. I '$G(PAT)!($G(CTG)="") Q ""
  1. S CTGN=$O(^AUTTHF("B",CTG,0)) I 'CTGN Q "" ;ien of category passed
  1. ;
  1. S HF=0
  1. F S HF=$O(^AUTTHF("AC",CTGN,HF)) Q:'+HF D ;find health factors in category
  1. . Q:'$D(^AUPNVHF("AA",PAT,HF)) ;quit if patient doesn't have health factor
  1. . S HFDT=$O(^AUPNVHF("AA",PAT,HF,"")) Q:'HFDT ;get visit date for health factor
  1. . S LIST(HFDT)=$O(^AUPNVHF("AA",PAT,HF,HFDT,"")) ;store iens by date
  1. ;
  1. I '$O(LIST(0)) Q $S($G(CAP)=1:"No "_CTG_" health factors found for patient",1:"")
  1. S HFDT=$O(LIST(0)) ;find latest date (inverse dates)
  1. S RESULT=$S($G(CAP)=1:"Last "_CTG_" HF: ",1:"")
  1. S RESULT=RESULT_$$GET1^DIQ(9000010.23,LIST(HFDT),.01)
  1. S X=$$GET1^DIQ(9000010.23,LIST(HFDT),.04) ;severity level
  1. S RESULT=RESULT_$S(X]"":" ( "_X_")",1:"")
  1. S RESULT=RESULT_" - "_$$FMTE^XLFDT(9999999-HFDT)
  1. Q RESULT
  1. ;
  1. VINS(TARGET) ; returns insurance coverage for current vuecentric visit context; PATCH 1001
  1. ; assumes DFN is set
  1. I $T(GETVAR^CIAVMEVT)="" S @TARGET@(1,0)="Invalid context variables" Q "~@"_$NA(@TARGET)
  1. NEW VST,I,X,CNT,RESULT
  1. S CNT=0
  1. S VST=$$GETVAR^CIAVMEVT("ENCOUNTER.ID.ALTERNATEVISITID",,"CONTEXT.ENCOUNTER")
  1. I VST="" S @TARGET@(1,0)="Invalid visit" Q "~@"_$NA(@TARGET)
  1. S X="BEHOENCX" X ^%ZOSF("TEST") I $T S VST=+$$VSTR2VIS^BEHOENCX(DFN,VST) I VST<1 S @TARGET@(1,0)="Invalid context variables" Q "~@"_$NA(@TARGET)
  1. D GETINS(.RESULT,VST)
  1. ;
  1. K @TARGET
  1. S I=0 F S I=$O(RESULT(I)) Q:'I D
  1. .S CNT=CNT+1
  1. .S @TARGET@(CNT,0)=RESULT(I)
  1. I 'CNT S @TARGET@(1,0)="No Insurance Coverage Found"
  1. Q "~@"_$NA(@TARGET)
  1. ;
  1. GETINS(RETURN,VISIT) ;return insurance coverage at time of visit
  1. ; VISIT=Visit IEN
  1. ;
  1. NEW VDT,LINE,CNT,SEL,IEN,MEDCARE,SEL,INS,PVT,RR,RRE
  1. K RETURN
  1. ;
  1. S VDT=+$G(^AUPNVSIT(VISIT,0)) I 'VDT Q
  1. S LINE="",CNT=0
  1. I $$MCR^AUPNPAT(DFN,VDT)=1 D
  1. .S MEDCARE=$$MCR2^BTIULO2(DFN)
  1. .I MEDCARE="" D
  1. ..S IEN=$O(^AUPNMCR("B",DFN,0))
  1. ..S MEDCARE=$P($G(^AUPNMCR(IEN,0)),U,3)
  1. .F SEL=1:1 S INS=$P(MEDCARE,";",SEL) Q:INS="" D
  1. ..S CNT=CNT+1
  1. ..S RETURN(CNT)="MEDICARE ("_INS_")"
  1. I $$MCD^AUPNPAT(DFN,VDT)=1 S CNT=CNT+1 S RETURN(CNT)="MEDICAID #"_$$MCD^BTIULO2(DFN)
  1. I $$PI^AUPNPAT(DFN,VDT)=1 D
  1. .S PVT=$$THIRD^BTIULO2(DFN)
  1. .F SEL=1:1 S INS=$P(PVT,";",SEL) Q:INS="" D
  1. ..S CNT=CNT+1
  1. ..S RETURN(CNT)="PVT INS ("_INS_")"
  1. I $$RR^AUPNPAT(DFN,VDT)=1 D
  1. .S RR=$$RRE^BTIULO2(DFN)
  1. .I RR="" D
  1. ..S IEN=$O(^AUPNRRE("B",DFN,0))
  1. ..S RR=$P($G(^AUPNRRE(IEN,0)),U,3)
  1. .F SEL=1:1 S INS=$P(RR,";",SEL) Q:INS="" D
  1. ..S CNT=CNT+1
  1. ..S RETURN(CNT)="RAILROAD ("_INS_")"
  1. Q
  1. ;
  1. NLAB(DFN,TIUTST,TIUCNT,BRIEF) ;EP; -- returns last # of current lab result for single test;PATCH 1001
  1. ; TIUTST = lab test name; TIUCNT = # of test results to return
  1. ;Brief is set to remove caption and only insert test name PATCH 1003
  1. ;IHS/CIA/MGH Modified to only display the test name and line up labs better
  1. ;UPDATED 1009 FOR MULTIPLE RESULTS ON SAME VISIT
  1. NEW LAB,CAPTION,VDT,IEN,X,TIU,LINE,CNT,DATA,LGTH,ARR,DATE,DATE2,LCNT
  1. K ^TMP("BTIULO",$J)
  1. S LAB=$O(^LAB(60,"B",TIUTST,0)) I LAB="" Q ""
  1. I $G(BRIEF) S CAPTION=$E(TIUTST,1,30)_":" ;PATCH 1003
  1. E S CAPTION="Last "_TIUCNT_" "_$E(TIUTST,1,30)_": "
  1. S (VDT,CNT)=0
  1. F S VDT=$O(^AUPNVLAB("AA",DFN,LAB,VDT)) Q:('VDT)!(CNT=TIUCNT) D
  1. . S IEN=0
  1. . F S IEN=$O(^AUPNVLAB("AA",DFN,LAB,VDT,IEN)) Q:'IEN!(CNT=TIUCNT) D
  1. .. K TIU D ENP^XBDIQ1(9000010.09,IEN,".03:.05;1109;1201","TIU(")
  1. .. Q:TIU(.04)="" ;skip if not resulted
  1. .. S DATE=$$GET1^DIQ(9000010.09,IEN,1201,"I")
  1. .. I DATE="" S DATE=$$GET1^DIQ(9000010.09,IEN,.03,"I")
  1. .. S DATE2=$S(TIU(1201)]"":TIU(1201),1:TIU(.03))
  1. .. S CNT=CNT+1 ;increment counter
  1. .. S LGTH=$L(TIU(.05)) ;PATCH 1003
  1. .. S DATA=$S(LGTH=1:" "_DATE2,LGTH=2:" "_DATE2,1:" "_DATE2) ;PATCH 1003
  1. .. S ARR(DATE,IEN)=$J(TIU(.04),8)_" "_TIU(.05)_" "_DATA
  1. S CNT=0,LCNT=0,DATE=""
  1. ;IHS/MSC/MGH patch 1006 and 1010 change to check for CNT inside a date
  1. N VFILENUM,ARRAY
  1. F S DATE=$O(ARR(DATE),-1) Q:DATE=""!(CNT>=TIUCNT) D
  1. . S IEN="" F S IEN=$O(ARR(DATE,IEN),-1) Q:'IEN!(CNT>=TIUCNT) D
  1. .. S LINE=$G(ARR(DATE,IEN)),CNT=CNT+1,LCNT=LCNT+1
  1. .. S Y=$S(CNT=1:CAPTION,1:$$SP($L(CAPTION)))
  1. .. S ^TMP("BTIULO",$J,LCNT,0)=Y_LINE
  1. I '$D(^TMP("BTIULO",$J)) S ^TMP("BTIULO",$J,1,0)=CAPTION_"No Results Found"
  1. Q "~@^TMP(""BTIULO"",$J)"
  1. ;
  1. NVIT(DFN,TIUMSR,TIUCNT,TIUDATE,BRIEF) ;EP; returns last # of of a specific vital sign; PATCH 1002 new code
  1. ; TIUMSR = measurement name
  1. ; TIUCNT = # of results to return
  1. ; TIUDATE=1 return date measurement taken
  1. ;IHS/CIA/MGH Parameter BRIEF added to remove caption from display PATCH 1003
  1. ;
  1. NEW LAB,CAPTION,VDT,IEN,X,TIU,LINE,CNT,STOP,DATE,ARR,MSR,TT,QUALIF
  1. K ^TMP("BTIULO",$J)
  1. S MSR=$O(^AUTTMSR("B",TIUMSR,0)) I MSR="" S ^TMP("BTIULO",$J,1,0)="No measurements" Q "~@^TMP(""BTIULO"",$J)"
  1. I $G(BRIEF) S CAPTION=TIUMSR_": " ;PATCH 1003
  1. E S CAPTION="Last "_TIUCNT_" "_TIUMSR_": "
  1. ;
  1. S (VDT,CNT)=0
  1. F S VDT=$O(^AUPNVMSR("AA",DFN,MSR,VDT)) Q:('VDT)!(CNT>TIUCNT) D
  1. . S IEN=0
  1. . F S IEN=$O(^AUPNVMSR("AA",DFN,MSR,VDT,IEN)) Q:'IEN D
  1. . . K TIU D ENP^XBDIQ1(9000010.01,IEN,".03;.04;2;1201","TIU(","I")
  1. . . Q:TIU(2,"I")=1
  1. . . S TT=$G(TIU(1201,"I"))
  1. . . S LINE=$G(TIU(.04))_U_$G(TIU(.03,"I"))_U_TT
  1. . . NEW Y
  1. . . I TIUMSR="TMP" S Y=$P(LINE,U),Y=Y_" F ["_$J(((Y-32)/1.8),5,2)_" C]",$P(LINE,U)=Y
  1. . . I ((TIUMSR="HT")!(TIUMSR="HC")!(TIUMSR="WC")!(TIUMSR="AG")) S Y=$P(LINE,U),Y=$J(Y,5,2)_" in ["_$J((Y*2.54),5,2)_" cm]",$P(LINE,U)=Y
  1. . . I TIUMSR="WT" S Y=$P(LINE,U),Y=$J(Y,5,2)_" lb ["_$J((Y*.454),5,2)_" kg]",$P(LINE,U)=Y
  1. . . I TIUMSR="BMI" D
  1. . . . S Y=$P(LINE,U),Y=$J(Y,5,2)
  1. . . . I $$PREG^BTIUPCC6(DFN,"",IEN)=1 S Y=Y_"*"
  1. . . . S $P(LINE,U)=Y
  1. . . S QUALIF=$$QUAL^BTIULO7A(IEN)
  1. . . I QUALIF'="" S LINE=LINE_U_QUALIF
  1. . . ;
  1. . . ; set it array by date/time to find most recent
  1. . . ;IHS/MSC/MGH 1009 Changed lookup to not add a . if there is no time
  1. . . S DATE=$S($G(TIU(1201,"I"))]"":+TIU(1201,"I"),1:(9999999-VDT))
  1. . . ;S DATE=$S($G(TIU(.07,"I"))]"":TIU(.07,"I"),$G(TIU(1201,"I"))]"":TIU(1201,"I"),1:(9999999-$P(VDT,"."))_$S($P(VDT,".",2)'="":"."_$P(VDT,".",2),1:""))
  1. . . S ARR(DATE,IEN)=LINE,CNT=CNT+1
  1. ;
  1. ; loop thru array backwards to display most recent first
  1. S CNT=0,DATE=""
  1. ;IHS/MSC/MGH patch 1006 change to check for CNT inside a date
  1. F S DATE=$O(ARR(DATE),-1) Q:'DATE!(CNT>=TIUCNT) D
  1. . S IEN="" F S IEN=$O(ARR(DATE,IEN),-1) Q:'IEN!(CNT>=TIUCNT) D
  1. . . S LINE=ARR(DATE,IEN),CNT=CNT+1
  1. . . S X=$S(CNT=1:CAPTION,1:$$SP($L(CAPTION))) ;either caption if first one or spaces to line up under first one
  1. . . I $P(LINE,U,4)="" S ^TMP("BTIULO",$J,CNT,0)=X_$P(LINE,U)_$$LSTDATE^BTIUPCC1($P(LINE,U,2),$P(LINE,U,3),$G(TIUDATE))
  1. . . I $P(LINE,U,4)'="" S ^TMP("BTIULO",$J,CNT,0)=X_$P(LINE,U)_$$LSTDATE^BTIUPCC1($P(LINE,U,2),$P(LINE,U,3),$G(TIUDATE))_" Qualifiers: "_$P(LINE,U,4)
  1. ;
  1. I '$D(^TMP("BTIULO",$J)) S ^TMP("BTIULO",$J,1,0)=CAPTION_"No "_TIUMSR_" Found"
  1. Q "~@^TMP(""BTIULO"",$J)"
  1. ;
  1. LMP(DFN,MODE) ;EP; LMP-BRIEF and LMP-EXPANDED objects
  1. ;MODE="B" or "E"
  1. NEW X
  1. I '$D(MODE) S @TARGET@(1,0)="Please see your CAC to upgrade this object" Q "~@"_$NA(@TARGET)
  1. I $P(^DPT(DFN,0),U,2)="M" Q "Patient is male"
  1. S X=$$GET1^DIQ(9000017,+$G(DFN),2)
  1. I (MODE="B")!(X="") Q "LMP: "_$S(X="":"None Recorded",1:X)
  1. Q "LMP: "_X_" (recorded on "_$$GET1^DIQ(9000017,+$G(DFN),2.1)_")"
  1. ;
  1. EDC(DFN,MODE) ;EP; EDC-BRIEF and EDC-EXPANDED objects
  1. ;MODE="B" or "E"
  1. NEW X,HOW,EDCDT
  1. I '$D(MODE) S @TARGET@(1,0)="Please see your CAC to upgrade this object" Q "~@"_$NA(@TARGET)
  1. I $P(^DPT(DFN,0),U,2)="M" Q "Patient is male"
  1. S X=$$GET1^DIQ(9000017,+$G(DFN),1311)
  1. I (MODE="B")!(X="") Q "EDC: "_$S(X="":"None Recorded",1:X)
  1. S HOW=$$GET1^DIQ(9000017,+DFN,1313),EDCDT=$$GET1^DIQ(9000017,DFN,1312)
  1. Q "EDC: "_X_" (determined by "_$S(HOW="":"UNKNOWN METHOD",1:HOW)_" on "_EDCDT_")"
  1. ;
  1. RHX(DFN,TARGET,MODE) ;EP; REPRODUCTIVE HX-BRIEF and REPRODUCTIVE HX-EXPANDED objects
  1. ;MODE="B" or "E"
  1. ;Patch 1006 updated to get data from new fields
  1. NEW X,GRAV,OTHER,PARA,LC,SA,TA,TOT,G,MB,FT,PRE,EC,LAC,LAC1,LACDATE
  1. K @TARGET
  1. I '$D(MODE) S @TARGET@(1,0)="Please see your CAC to upgrade this object" Q "~@"_$NA(@TARGET)
  1. ;I '$D(MODE)!(MODE="") S MODE="B"
  1. I $P(^DPT(DFN,0),U,2)="M" S @TARGET@(1,0)="Patient is male" Q "~@"_$NA(@TARGET)
  1. I '$D(^AUPNREP(DFN,0)) S @TARGET@(1,0)="No history on file" Q "~@"_$NA(@TARGET)
  1. S X=$$GET1^DIQ(9000017,+$G(DFN),1103)
  1. I X="" D OLD^BTIULO7A(DFN,TARGET,MODE) Q "~@"_$NA(@TARGET)
  1. S G=X
  1. I MODE="E" S G=G_" ("_$$GET1^DIQ(9000017,+$G(DFN),1104,"E")_")"
  1. S MB=$$GET1^DIQ(9000017,+$G(DFN),1105)
  1. I MODE="E" S MB=MB_" ("_$$GET1^DIQ(9000017,+$G(DFN),1106)_")"
  1. S FT=$$GET1^DIQ(9000017,+$G(DFN),1107)
  1. I MODE="E" S FT=FT_" ("_$$GET1^DIQ(9000017,+$G(DFN),1108)_")"
  1. S PRE=$$GET1^DIQ(9000017,+$G(DFN),1109)
  1. I MODE="E" S PRE=PRE_" ("_$$GET1^DIQ(9000017,+$G(DFN),1110)_")"
  1. S EC=$$GET1^DIQ(9000017,+$G(DFN),1111)
  1. I MODE="E" S EC=EC_" ("_$$GET1^DIQ(9000017,+$G(DFN),1112)_")"
  1. S LC=$$GET1^DIQ(9000017,+$G(DFN),1113)
  1. I MODE="E" S LC=LC_" ("_$$GET1^DIQ(9000017,+$G(DFN),1114)_")"
  1. S TA=$$GET1^DIQ(9000017,+$G(DFN),1131)
  1. I MODE="E" S TA=TA_" ("_$$GET1^DIQ(9000017,+$G(DFN),1132)_")"
  1. S SA=$$GET1^DIQ(9000017,+$G(DFN),1133)
  1. I MODE="E" S SA=SA_" ("_$$GET1^DIQ(9000017,+$G(DFN),1106)_")"
  1. S LAC1=""
  1. S LAC=$G(^AUPNREP(DFN,2))
  1. ;IHS/MSC/MGH patch 1010 check for blank lactation status
  1. I LAC'="" D
  1. .S LAC1=$$GET1^DIQ(9000017,DFN,2.01)
  1. .S LACDATE=$$GET1^DIQ(9000017,DFN,2.02)
  1. .I MODE="E" S LAC1=LAC1_" ("_LACDATE_")"
  1. ;IHS/MSC/MGH patch 1009 changed order of display
  1. S CNT=1
  1. S @TARGET@(CNT,0)="Gravida: "_G
  1. S CNT=CNT+1
  1. S @TARGET@(CNT,0)="Full Term: "_FT
  1. S CNT=CNT+1
  1. S @TARGET@(CNT,0)="Premature Births: "_PRE
  1. S CNT=CNT+1
  1. S @TARGET@(CNT,0)="Theraputic Abortions: "_TA
  1. S CNT=CNT+1
  1. S @TARGET@(CNT,0)="Spontaneous Abortions: "_SA
  1. S CNT=CNT+1
  1. S @TARGET@(CNT,0)="Ectopics: "_EC
  1. S CNT=CNT+1
  1. S @TARGET@(CNT,0)="Living Children: "_LC
  1. S CNT=CNT+1
  1. S @TARGET@(CNT,0)="Multiple Births: "_MB
  1. S CNT=CNT+1
  1. S @TARGET@(CNT,0)="Lactation Status: "_LAC1
  1. Q "~@"_$NA(@TARGET)
  1. ;
  1. FPM(DFN,TARGET,MODE) ;EP; CONTRACEPTION-BRIEF object
  1. ;MODE="B" or "E"
  1. NEW X,FPBEGIN,FPDATE,BHX,TYP,START,END,CNT,LINE,LIN1,BHC
  1. K @TARGET
  1. S CNT=0
  1. I $P(^DPT(DFN,0),U,2)="M" Q "Patient is male"
  1. S BHX=0 F S BHX=$O(^AUPNREP(DFN,2101,BHX)) Q:BHX'=+BHX D
  1. .Q:$D(^AUPNREP(DFN,2101,BHX,1))>0
  1. .S BHC=$P(^AUPNREP(DFN,2101,BHX,0),U,1) I BHC D
  1. ..S TYP=$P(^AUTTCM(BHC,0),U)
  1. ..S START=$P(^AUPNREP(DFN,2101,BHX,0),U,2) I START]"" S START=$$FIXDT^BHSFAM1(START)
  1. ..S END=$P(^AUPNREP(DFN,2101,BHX,0),U,3) I END]"" S END=$$FIXDT^BHSFAM1(END)
  1. ..I CNT=0 D
  1. ...S CNT=CNT+1 S @TARGET@(CNT,0)=""
  1. ...S CNT=CNT+1 S @TARGET@(CNT,0)="FP METHOD: "
  1. ..S LINE=$S(TYP="":"None Recorded",1:TYP)
  1. ..I MODE="B"&(END="") D
  1. ...S CNT=CNT+1
  1. ...S LINE=" "_LINE_" Start Dt: "_START
  1. ...S @TARGET@(CNT,0)=LINE
  1. ..I MODE="E" D
  1. ...S CNT=CNT+1
  1. ...S LINE=" "_LINE_" Start Dt: "_START
  1. ...S @TARGET@(CNT,0)=LINE
  1. ...I END'="" D
  1. ....S CNT=CNT+1
  1. ....S LIN1=""
  1. ....I $P(^AUPNREP(DFN,2101,BHX,0),U,5)]"" S LIN1=" Reason Discontinued: "_$P(^AUPNREP(DFN,2101,BHX,0),U,5)
  1. ....S @TARGET@(CNT,0)=" End Dt: "_END_LIN1
  1. Q "~@"_$NA(@TARGET)
  1. ;
  1. TODAYVIT(PAT) ;EP; returns all vitals taken today
  1. NEW MEAS,VST,VDT,END,APCLV,ERR,TYPE,VALUE
  1. ;
  1. ; for each visit patient had today, find all measurements taken
  1. S VDT=9999999-DT,END=VDT_".2359"
  1. F S VDT=$O(^AUPNVSIT("AA",PAT,VDT)) Q:'VDT Q:VDT>END D
  1. . S VST=$O(^AUPNVSIT("AA",PAT,VDT,0)) Q:'VST
  1. . S ERR=$$PCCVF^APCLV(VST,"MEASUREMENT","7;8") I ERR Q
  1. . S X=0 F S X=$O(APCLV(X)) Q:'X D
  1. . . S MEAS($P(APCLV(X),U),VDT)=$P(APCLV(X),U,2)
  1. ;
  1. ; loop through all measurements found for patient and date; pick most recent ones
  1. S RESULT=""
  1. S TYPE=0 F S TYPE=$O(MEAS(TYPE)) Q:TYPE="" D
  1. . S DATE=$O(MEAS(TYPE,""),-1) ;get latest date/time
  1. . S VALUE=MEAS(TYPE,DATE) ;get value for this measurement & date/time
  1. . I TYPE="WT" S VALUE=$J(VALUE,5,2)_" ("_$J((VALUE*.454),5,2)_" kg)"
  1. . I ((TYPE="HT")!(TYPE="HC")!(TYPE="WC")!(TYPE="AG")) S VALUE=$J(VALUE,5,2)_" ("_$J((VALUE*2.54),5,2)_" cm)"
  1. . I TYPE="TMP" S VALUE=VALUE_" ("_(((10*((VALUE-32)/1.8))\1)/10)_" C)"
  1. . I TYPE="BMI" D
  1. . . S VALUE=$J(VALUE,5,2)
  1. . . I $$PNM^APCLSIL1(DFN,DT)="Y" S VALUE=VALUE_"*"
  1. . S RESULT=RESULT_TYPE_":"_VALUE_", "
  1. S RESULT=$E(RESULT,1,$L(RESULT)-2) ;remove last comma
  1. Q RESULT
  1. ;
  1. TODAYLAB(PAT) ;EP; returns all labs taken today;PATCH 1002 new code
  1. NEW VDT,END,VISIT,COUNT,TIUX,LINE,TIUA
  1. K ^TMP("BTIULO",$J)
  1. ;
  1. ; for each visit patient had today, find all labs
  1. S VDT=9999999-DT,END=VDT_".2359"
  1. F S VDT=$O(^AUPNVSIT("AA",PAT,VDT)) Q:'VDT Q:VDT>END D
  1. . S VISIT=0 F S VISIT=$O(^AUPNVSIT("AA",PAT,VDT,VISIT)) Q:'VISIT D
  1. . . S TIUX=0,LINE="" F S TIUX=$O(^AUPNVLAB("AD",VISIT,TIUX)) Q:'TIUX D
  1. . . . K TIUA D ENP^XBDIQ1(9000010.09,TIUX,".01;.04;.05;1109","TIUA(")
  1. . . . I TIUA(.04)="",TIUA(1109)="RESULTED" Q
  1. . . . S LINE=" "_$$PAD(TIUA(.01),25)_" " ;lab test
  1. . . . S LINE=LINE_$$PAD(TIUA(.04),10)_TIUA(.05) ;result
  1. . . . I TIUA(.04)="" S LINE=LINE_TIUA(1109)
  1. . . . S COUNT=$G(COUNT)+1 S ^TMP("BTIULO",$J,COUNT,0)=LINE
  1. ;
  1. I '$D(^TMP("BTIULO",$J)) Q "No Labs Found for Today"
  1. Q "~@^TMP(""BTIULO"",$J)"
  1. ;
  1. PAD(DATA,LENGTH) ; -- SUBRTN to pad length of data
  1. Q $E(DATA_$$REPEAT^XLFSTR(" ",LENGTH),1,LENGTH)
  1. ;
  1. SP(NUM) ; -- SUBRTN to pad spaces
  1. Q $$PAD(" ",NUM)