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

BQITRUTL.m

Go to the documentation of this file.
  1. BQITRUTL ;PRXM/HC/ALA-Treatment Prompts Utilities ; 18 May 2007 12:40 PM
  1. ;;2.5;ICARE MANAGEMENT SYSTEM;**1,2**;May 24, 2016;Build 14
  1. ;
  1. BP(TMFRAME,BQDFN,SYS,DIA,OPER) ;EP
  1. ;NonER blood pressures
  1. ;
  1. ; Input
  1. ; TMFRAME - Time frame to search data for
  1. ; BQDFN - Patient internal entry number
  1. ; SYS - The systolic value to compare against
  1. ; DIA - The diastolic value to compare against
  1. ; OPER - The operand to check the systolic and diastolic with
  1. ;
  1. NEW BDATE,EDATE,TBP,N,CT,OK,BCLN,VIS,VALUE,VSYS,VDIA,RESULT
  1. S TMFRAME=$G(TMFRAME,"T-60M"),RESULT=0
  1. S BDATE=$$DATE^BQIUL1(TMFRAME),BDATE=$$FMTE^XLFDT(BDATE),EDATE=$$FMTE^XLFDT(DT)
  1. S %=BQDFN_"^ALL MEAS BP;DURING "_BDATE_"-"_EDATE
  1. K TBP
  1. S E=$$START1^APCLDF(%,"TBP(")
  1. I $G(OPER)="" D Q RESULT
  1. . I '$D(TBP) Q
  1. . S RESULT=1
  1. S OPER=$G(OPER,">")
  1. S (RESULT,N)="",(CT,OK)=0,BCLN=$$FIND1^DIC(40.7,"","Q","30","C","","ERROR")
  1. F S N=$O(TBP(N),-1) Q:N="" D Q:CT=3
  1. . S VIS=$P(TBP(N),U,5) Q:VIS=""
  1. . I $P($G(^AUPNVSIT(VIS,0)),U,8)=BCLN Q
  1. . S VALUE=$P(TBP(N),U,2)
  1. . S DATE=$P(TBP(N),U,1),IEN=$P($P(TBP(N),U,4),";",1)
  1. . S VSYS=$P(VALUE,"/",1),VDIA=$P(VALUE,"/",2)
  1. . I VSYS=""!(VDIA="") Q
  1. . S CT=CT+1 I CT>3 Q
  1. . I @(VSYS_OPER_SYS) S OK=OK+1 D FBP Q
  1. . I @(VDIA_OPER_DIA) S OK=OK+1 D FBP Q
  1. . D FBP
  1. . ;I @(VSYS_OPER_SYS)!(@(VDIA_OPER_DIA)) S OK=OK+1
  1. . ;I VSYS>SYS!(VDIA>DIA) S OK=OK+1
  1. I OK>1 Q 1_U_RESULT
  1. Q 0_U_$S(RESULT'="":RESULT,1:"No BPs in timeframe")
  1. ;
  1. FBP ; Set BP variables
  1. S $P(RESULT,U,1)=$P(RESULT,U,1)_DATE_";"
  1. S $P(RESULT,U,2)=$P(RESULT,U,2)_IEN_";"
  1. S $P(RESULT,U,3)=$P(RESULT,U,3)_VIS_";"
  1. S $P(RESULT,U,4)=$P(RESULT,U,4)_VALUE_";"
  1. Q
  1. ;
  1. LAB(TMFRAME,RECENT,BQDFN,TAX,RESULT,OPER,RES2,OPER2,TREF) ;EP
  1. ; Check for a lab test result
  1. ;
  1. ; Input
  1. ; TMFRAME - Time frame to search data for
  1. ; RECENT - 1=Only check most recent lab,0=Check all within timeframe
  1. ; BQDFN - Patient internal entry number
  1. ; TAX - Lab taxonomy to search
  1. ; RESULT - Lab result to check for
  1. ; OPER - Operand to use for result check
  1. ; RES2 - If range, the other result value
  1. ; OPER2 - If range, the other result operand
  1. ; TREF - Multiple same resulting taxonomies built
  1. ; into reference (usually global)
  1. ;
  1. NEW TEMP,EDATE,BDATE,LIEN,QFL,RES,CT,VALUE,VIEN,VSDTM,MICRO,OVALUE,NCT
  1. S BDATE=$$DATE^BQIUL1(TMFRAME),EDATE=DT
  1. S TEMP=$NA(^TMP(UID,"BQITEMP")) K @TEMP
  1. S TAX=$G(TAX,"")
  1. I TAX'="" D
  1. . S TREF=$NA(^TMP(UID,"BQITAX")),RES2=$G(RES2,""),OPER2=$G(OPER2,""),RECENT=$G(RECENT,0)
  1. . K @TREF
  1. . D BLD^BQITUTL(TAX,TREF)
  1. ;
  1. S LIEN="",QFL=0,RES=0_U_"No Test",CT=0
  1. I $G(TMFRAME)'="" D
  1. . S TIEN=""
  1. . F S TIEN=$O(@TREF@(TIEN)) Q:TIEN="" D
  1. .. S EDT=9999999-BDATE,BDT=(9999999-EDATE)-.001
  1. .. I $P($G(^LAB(60,TIEN,0)),U,4)="MI" D MIC^BQICAUTL(BQDFN,TIEN,EDT,BDT,.MICRO) Q
  1. .. F S BDT=$O(^AUPNVLAB("AA",BQDFN,TIEN,BDT)) Q:BDT=""!(BDT>EDT) D
  1. ... S LIEN=""
  1. ... F S LIEN=$O(^AUPNVLAB("AA",BQDFN,TIEN,BDT,LIEN)) Q:LIEN="" D
  1. .... S VALUE=$P(^AUPNVLAB(LIEN,0),U,4) I VALUE="" Q
  1. .... S VIEN=$P(^AUPNVLAB(LIEN,0),U,3) I VIEN="" Q
  1. .... S FLAG=$P($G(^AUPNVLAB(LIEN,11)),U,9) I FLAG="" Q
  1. .... I FLAG'="R"&(FLAG'="M") Q
  1. .... ;S VSDTM=$$GET1^DIQ(9000010,VIEN_",",.01,"I")\1 I VSDTM=0 Q
  1. .... S VSDTM=$P($G(^AUPNVSIT(VIEN,0)),"^",1)\1 I VSDTM=0 Q
  1. .... ;I $G(TMFRAME)'="",VSDTM<BDATE Q
  1. .... ; quit if deleted flag
  1. .... I $P($G(^AUPNVSIT(VIEN,0)),U,11)=1 Q
  1. .... I $P($G(^AUPNVLAB(LIEN,11)),U,9)="D" Q
  1. .... S @TEMP@(VSDTM,VIEN,LIEN)=VALUE_U_TIEN
  1. ;
  1. I $G(TMFRAME)="" D
  1. . S LIEN=""
  1. . F S LIEN=$O(^AUPNVLAB("AC",BQDFN,LIEN),-1) Q:LIEN="" D
  1. .. S TIEN=$P($G(^AUPNVLAB(LIEN,0)),U,1) I TIEN="" Q
  1. .. I '$D(@TREF@(TIEN)) Q
  1. .. S VALUE=$P(^AUPNVLAB(LIEN,0),U,4) I VALUE="" Q
  1. .. S VIEN=$P(^AUPNVLAB(LIEN,0),U,3) I VIEN="" Q
  1. .. ;S VSDTM=$$GET1^DIQ(9000010,VIEN_",",.01,"I")\1 I VSDTM=0 Q
  1. .. S VSDTM=$P($G(^AUPNVSIT(VIEN,0)),"^",1)\1 I VSDTM=0 Q
  1. .. ;I $G(TMFRAME)'="",VSDTM<BDATE Q
  1. .. ; quit if deleted flag
  1. .. I $P($G(^AUPNVSIT(VIEN,0)),U,11)=1 Q
  1. .. I $P($G(^AUPNVLAB(LIEN,11)),U,9)="D" Q
  1. .. S @TEMP@(VSDTM,VIEN,LIEN)=VALUE_U_TIEN
  1. . F S LIEN=$O(^AUPNVMIC("AC",BQDFN,LIEN),-1) Q:LIEN="" D
  1. .. S TIEN=$P($G(^AUPNVMIC(LIEN,0)),U,1) I TIEN="" Q
  1. .. I '$D(@TREF@(TIEN)) Q
  1. .. S VALUE=$P(^AUPNVMIC(LIEN,0),U,7) I VALUE="" Q
  1. .. S VIEN=$P(^AUPNVMIC(LIEN,0),U,3) I VIEN="" Q
  1. .. ;S VSDTM=$$GET1^DIQ(9000010,VIEN_",",.01,"I")\1 I VSDTM=0 Q
  1. .. S VSDTM=$P($G(^AUPNVSIT(VIEN,0)),"^",1)\1 I VSDTM=0 Q
  1. .. ; quit if deleted flag
  1. .. I $P($G(^AUPNVSIT(VIEN,0)),U,11)=1 Q
  1. .. I $P($G(^AUPNVMIC(LIEN,11)),U,9)="D" Q
  1. .. S @TEMP@(VSDTM,VIEN,LIEN)=VALUE_U_TIEN
  1. ;
  1. S VSDTM="",CT=0,NCT=0
  1. F S VSDTM=$O(@TEMP@(VSDTM),-1) Q:VSDTM="" S CT=CT+1
  1. F S VSDTM=$O(@TEMP@(VSDTM),-1) Q:VSDTM="" D Q:QFL
  1. . S VIEN=$O(@TEMP@(VSDTM,""),-1)
  1. . S LIEN=$O(@TEMP@(VSDTM,VIEN,""),-1)
  1. . S VALUE=$P(@TEMP@(VSDTM,VIEN,LIEN),U,1),OVALUE=VALUE
  1. . S TIEN=$P(@TEMP@(VSDTM,VIEN,LIEN),U,2)
  1. . K ROPER
  1. . S NCT=NCT+1
  1. . I OPER="'=",RESULT=0,VALUE'="" S RES=1_U_$$FMTE^BQIUL1(VSDTM)_U_VALUE_U_VIEN_U_LIEN_U_TIEN,QFL=1 Q
  1. . I RECENT,NCT=1 D Q
  1. .. D RCHK I 'RES Q
  1. .. S QFL=1,RES=1_U_$$FMTE^BQIUL1(VSDTM)_U_VALUE_U_VIEN_U_LIEN_U_TIEN Q
  1. . D RCHK
  1. K @TEMP
  1. Q RES
  1. ;
  1. EDTP(GREF,SRCH) ;EP - Search for education topics and put into a passed reference
  1. ;Input
  1. ; GREF - Reference
  1. ; SRCH - Search text
  1. ;
  1. NEW BQNM,IEN
  1. S BQNM=""
  1. F S BQNM=$O(^AUTTEDT("C",BQNM)) Q:BQNM="" D
  1. . I $E(SRCH,1,1)="-" D Q
  1. .. I BQNM'[SRCH Q
  1. .. D EFIL
  1. . I $E(BQNM,1,$L(SRCH))'=SRCH Q
  1. . D EFIL
  1. Q
  1. ;
  1. EFIL ; File data into reference
  1. S IEN=""
  1. F S IEN=$O(^AUTTEDT("C",BQNM,IEN)) Q:IEN="" D
  1. . I $P($G(^AUTTEDT(IEN,0)),U,3)=1 Q
  1. . I $G(^AUTTEDT(IEN,0))="" Q
  1. . S @GREF@(IEN)=$P(^AUTTEDT(IEN,0),U,1)
  1. Q
  1. ;
  1. MED(GREF,SRCH) ;EP
  1. ;Search for Medications
  1. ;Input
  1. ; GREF - Reference where results are to be stored
  1. ; SRCH - Value that is being searched on
  1. NEW BQNM,IEN
  1. S BQNM=""
  1. F S BQNM=$O(^PSDRUG("B",BQNM)) Q:BQNM="" D
  1. . I BQNM'[SRCH Q
  1. . S IEN=""
  1. . F S IEN=$O(^PSDRUG("B",BQNM,IEN)) Q:IEN="" D
  1. .. I $G(^PSDRUG(IEN,0))="" Q
  1. .. I $P($G(^PSDRUG(IEN,"I")),U,1)'="",$P($G(^PSDRUG(IEN,"I")),U,1)<DT Q
  1. .. S @GREF@(IEN)=$P(^PSDRUG(IEN,0),U,1)
  1. Q
  1. ;
  1. POSITIVE(RESULT) ; EP
  1. ; If the result is positive return a 1 else return a 0.
  1. I $E(RESULT,1)="+" Q 1
  1. I $E(RESULT,1)=">" Q 1
  1. S RESULT=$$UP^XLFSTR(RESULT)
  1. I RESULT="P" Q 1 ; Positive
  1. I RESULT="R" Q 1 ; Reactive
  1. I RESULT="WR" Q 1 ; Weakly Reactive
  1. I RESULT="REACTIVE" Q 1 ; Reactive
  1. I RESULT="WEAKLY REACTIVE" Q 1 ; Weakly Reactive
  1. I RESULT["POS" Q 1 ; Positive
  1. I RESULT["NOT DETECTED" Q 0
  1. I RESULT["NOTDETECTED" Q 0
  1. I RESULT["DETECTED" Q 1 ; Detected
  1. I RESULT="D" Q 1 ; Detected
  1. Q 0
  1. ;
  1. NEGATIVE(RESULT) ; EP
  1. ; If the result is negative return a 1 else return a 0.
  1. I $E(RESULT,1)="-" Q 1
  1. ; **NOTE: Documentation does not specify if "<" is considered negative.
  1. S RESULT=$$UP^XLFSTR(RESULT)
  1. I RESULT="N" Q 1 ; Negative (or Non-Reactive)
  1. I RESULT="NR" Q 1 ; Non-Reactive
  1. I RESULT="NON-REACTIVE" Q 1 ; Non-Reactive
  1. I RESULT="NON REACTIVE" Q 1 ; Non-Reactive
  1. I RESULT="NONREACTIVE" Q 1 ; Non-Reactive
  1. I RESULT["NON REAC" Q 1 ;non-reactive
  1. I RESULT["NEG" Q 1 ; Negative
  1. I RESULT["NOT DETECTED" Q 1
  1. I RESULT["NOTDETECTED" Q 1
  1. I RESULT["NOT DET" Q 1
  1. Q 0
  1. ;
  1. TAX(TMFRAME,TAX,NIT,PTDFN,FREF,PRB,SAME,TREF,START,END) ;EP
  1. ; Find value for a taxonomy (TAX) or list of taxonomies (TREF)
  1. ; Input
  1. ; TMFRAME - Timeframe to search for data
  1. ; TAX - Taxonomy
  1. ; NIT - Number of iterations
  1. ; PTDFN - Patient IEN
  1. ; FREF - File number reference
  1. ; PRB - If Active Problem okay
  1. ; SAME - If NIT is allowed for the same day or not (1 same day okay)
  1. ; TREF - Multiple same resulting taxonomies (e.g. MEDs) built
  1. ; into reference (usually global)
  1. ; START - Starting Date
  1. ; END - Ending Date
  1. ;
  1. NEW RESULT,GREF,ENDT,IEN,TIEN,TEMP,QFL,SRCTYP,VFL,VALUE
  1. S TMFRAME=$G(TMFRAME,""),NIT=$G(NIT,1),PRB=$G(PRB,0),SAME=$G(SAME,1)
  1. S RESULT=0,TREF=$G(TREF,""),TAX=$G(TAX,"")
  1. S START=$G(START,""),END=$G(END,"")
  1. I $G(TMFRAME)'="" S ENDT=$$DATE^BQIUL1(TMFRAME),BDT=""
  1. I $G(START)'=""!($G(END)'="") S ENDT=START,BDT=(9999999-END)-.001
  1. I $G(UID)="" S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. I TAX'="" D
  1. . S TREF=$NA(^TMP(UID,"BQITAX"))
  1. . K @TREF
  1. . D BLD^BQITUTL(TAX,TREF)
  1. S GREF=$$ROOT^DILFD(FREF,"",1)
  1. S TEMP=$NA(^TMP(UID,"BQITEMP")) K @TEMP
  1. ;
  1. I PRB D
  1. . S IEN="",QFL=0,RESULT=0
  1. . F S IEN=$O(^AUPNPROB("AC",PTDFN,IEN),-1) Q:IEN="" D Q:QFL
  1. .. ;S TIEN=$$GET1^DIQ(9000011,IEN,.01,"I") I TIEN="" Q
  1. .. S TIEN=$P($G(^AUPNPROB(IEN,0)),"^",1) I TIEN="" Q
  1. .. I '$D(@TREF@(TIEN)) Q
  1. .. ; Check class - if Family ignore
  1. .. ;I $$GET1^DIQ(9000011,IEN,.04,"I")="F" Q
  1. .. I $P($G(^AUPNPROB(IEN,0)),"^",4)="F" Q
  1. .. I $P($G(^AUPNPROB(IEN,0)),"^",12)'="A" Q
  1. .. ;I $$GET1^DIQ(9000011,IEN,.12,"I")'="A" Q
  1. .. S VSDTM=$$PROB^BQIUL1(IEN)\1 Q:VSDTM=0
  1. .. I $G(TMFRAME)'="",VSDTM<ENDT Q
  1. .. S RESULT=1_U_VSDTM,$P(RESULT,U,4)=IEN,QFL=1
  1. ;
  1. I 'RESULT D
  1. . S IEN="",QFL=0,RESULT=0,CT=0
  1. . D
  1. .. I $G(TMFRAME)="",$G(START)="",$G(END)="" Q
  1. .. S VFL=$O(^BQI(90508.6,"B",FREF,""))
  1. .. I VFL'="" S SRCTYP=$P(^BQI(90508.6,VFL,0),U,3)
  1. .. S EDT=9999999-ENDT
  1. .. I SRCTYP'=2 D Q
  1. ... F S BDT=$O(@GREF@("AA",PTDFN,BDT)) Q:BDT=""!(BDT>EDT) D
  1. .... S IEN=""
  1. .... F S IEN=$O(@GREF@("AA",PTDFN,BDT,IEN)) Q:IEN="" D
  1. ..... S TIEN=$$GET1^DIQ(FREF,IEN,.01,"I") I TIEN="" Q
  1. ..... I '$D(@TREF@(TIEN)) Q
  1. ..... S VISIT=$$GET1^DIQ(FREF,IEN,.03,"I") I VISIT="" Q
  1. ..... I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. ..... ;S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:VSDTM=0
  1. ..... S VSDTM=$P($G(^AUPNVSIT(VISIT,0)),"^",1)\1 I VSDTM=0 Q
  1. ..... ;I $G(TMFRAME)'="",VSDTM<ENDT Q
  1. ..... S VALUE=$$GET1^DIQ(FREF,IEN,.04,"E")
  1. ..... ; Set temporary
  1. ..... S @TEMP@(VSDTM,VISIT,IEN)=VALUE
  1. .. S TIEN=""
  1. .. F S TIEN=$O(@TREF@(TIEN)) Q:TIEN="" D
  1. ... I $G(TMFRAME)'="" S ENDT=$$DATE^BQIUL1(TMFRAME),BDT=""
  1. ... I $G(START)'=""!($G(END)'="") S ENDT=START,BDT=(9999999-END)-.001
  1. ... F S BDT=$O(@GREF@("AA",PTDFN,TIEN,BDT)) Q:BDT=""!(BDT>EDT) D
  1. .... S IEN=""
  1. .... F S IEN=$O(@GREF@("AA",PTDFN,TIEN,BDT,IEN)) Q:IEN="" D
  1. ..... S VISIT=$$GET1^DIQ(FREF,IEN,.03,"I") I VISIT="" Q
  1. ..... I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. ..... ;S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:VSDTM=0
  1. ..... S VSDTM=$P($G(^AUPNVSIT(VISIT,0)),"^",1)\1 I VSDTM=0 Q
  1. ..... S VALUE=$$GET1^DIQ(FREF,IEN,.04,"E")
  1. ..... S @TEMP@(VSDTM,VISIT,IEN)=VALUE
  1. . ;
  1. . I $G(TMFRAME)="" D
  1. .. I $G(START)'="",$G(END)'="" Q
  1. .. F S IEN=$O(@GREF@("AC",PTDFN,IEN),-1) Q:IEN="" D
  1. ... S TIEN=$$GET1^DIQ(FREF,IEN,.01,"I") I TIEN="" Q
  1. ... I '$D(@TREF@(TIEN)) Q
  1. ... S VISIT=$$GET1^DIQ(FREF,IEN,.03,"I") I VISIT="" Q
  1. ... ;I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. ... I $P($G(^AUPNVSIT(VISIT,0)),"^",11)=1 Q
  1. ... ;S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:VSDTM=0
  1. ... S VSDTM=$P($G(^AUPNVSIT(VISIT,0)),"^",1)\1 I VSDTM=0 Q
  1. ... ;I $G(TMFRAME)'="",VSDTM<ENDT Q
  1. ... S VALUE=$$GET1^DIQ(FREF,IEN,.04,"E")
  1. ... ; Set temporary
  1. ... S @TEMP@(VSDTM,VISIT,IEN)=VALUE
  1. ;
  1. S VSDTM="",QFL=0
  1. F S VSDTM=$O(@TEMP@(VSDTM),-1) Q:VSDTM=""!(QFL) D
  1. . S VISIT=""
  1. . F S VISIT=$O(@TEMP@(VSDTM,VISIT),-1) Q:VISIT="" D Q:QFL
  1. .. S IEN=""
  1. .. F S IEN=$O(@TEMP@(VSDTM,VISIT,IEN),-1) Q:IEN="" D Q:QFL
  1. ... ; If result cannot be on the same day, quit
  1. ... I 'SAME,$P(RESULT,U,2)=VSDTM Q
  1. ... S VALUE=@TEMP@(VSDTM,VISIT,IEN)
  1. ... S CT=CT+1
  1. ... I $P(RESULT,U,2)'="",(CT'>NIT) D
  1. .... S $P(RESULT,U,2)=$P(RESULT,U,2)_";"_VSDTM
  1. .... S $P(RESULT,U,4)=$P(RESULT,U,4)_";"_VISIT
  1. .... S $P(RESULT,U,5)=$P(RESULT,U,5)_";"_IEN
  1. .... S $P(RESULT,U,6)=$P(RESULT,U,6)_";"_VALUE
  1. ... I $P(RESULT,U,2)="" S $P(RESULT,U,2)=VSDTM,$P(RESULT,U,4)=VISIT_U_IEN,$P(RESULT,U,6)=VALUE
  1. ... ;S $P(RESULT,U,4)=VISIT_U_IEN,CT=CT+1
  1. ... ;S RESULT=U_VSDTM_U_U_VISIT_U_IEN,CT=CT+1
  1. ... I CT=NIT S QFL=1,$P(RESULT,U,1)=1
  1. K @TREF
  1. Q RESULT
  1. ;
  1. FED(TMFRAME,BQDFN,TOP) ;EP
  1. ; Find visits for a topic
  1. ; Input
  1. ; TMFRAME - Time frame to search data for
  1. ; BQDFN - Patient internal entry number
  1. ; TOP - Education Topic
  1. NEW BQITOP,ARRAY,FREF,GREF,ENDT,IEN,QFL,RESULT,EDT,BDT,TIEN,VISIT,VSDTM
  1. S TMFRAME=$G(TMFRAME,"")
  1. S ARRAY="BQITOP",FREF=9000010.16,GREF=$$ROOT^DILFD(FREF,"",1)
  1. D EDTP(.ARRAY,TOP)
  1. S ENDT=$$DATE^BQIUL1(TMFRAME)
  1. S IEN="",QFL=0,RESULT=0
  1. I $G(TMFRAME)'="" D
  1. . S EDT=9999999-ENDT,BDT=""
  1. . F S BDT=$O(@GREF@("AA",BQDFN,BDT)) Q:BDT=""!(BDT>EDT) D
  1. .. S IEN=""
  1. .. F S IEN=$O(@GREF@("AA",BQDFN,BDT,IEN)) Q:IEN="" D
  1. ... S TIEN=$$GET1^DIQ(FREF,IEN,.01,"I") I TIEN="" Q
  1. ... I '$D(BQITOP(TIEN)) Q
  1. ... S VISIT=$$GET1^DIQ(FREF,IEN,.03,"I") I VISIT="" Q
  1. ... ;I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. ... I $P($G(^AUPNVSIT(VISIT,0)),"^",11)=1 Q
  1. ... ;S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:VSDTM=0
  1. ... S VSDTM=$P($G(^AUPNVSIT(VISIT,0)),"^",1)\1 I VSDTM=0 Q
  1. ... S RESULT=1_U_VSDTM_U_U_VISIT_U_IEN,QFL=1
  1. ;
  1. I $G(TMFRAME)="" D
  1. . F S IEN=$O(@GREF@("AC",BQDFN,IEN),-1) Q:'IEN D Q:QFL
  1. .. S TIEN=$$GET1^DIQ(FREF,IEN,.01,"I") I TIEN="" Q
  1. .. I '$D(BQITOP(TIEN)) Q
  1. .. S VISIT=$$GET1^DIQ(FREF,IEN,.03,"I") I VISIT="" Q
  1. .. ;I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. .. I $P($G(^AUPNVSIT(VISIT,0)),"^",11)=1 Q
  1. .. ;S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:VSDTM=0
  1. .. S VSDTM=$P($G(^AUPNVSIT(VISIT,0)),"^",1)\1 I VSDTM=0 Q
  1. .. ;I $G(TMFRAME)'="",VSDTM<ENDT Q
  1. .. S RESULT=1_U_VSDTM_U_U_VISIT_U_IEN,QFL=1
  1. Q RESULT
  1. ;
  1. RCHK ;EP - Result check
  1. I RESULT'?.N,VALUE?.N Q
  1. ;
  1. I RESULT="POS",$E(VALUE,1)'?.N,'$$POSITIVE(VALUE) Q
  1. I RESULT="POS",$E(VALUE,1)'?.N,$$POSITIVE(VALUE) D Q
  1. . S RES=1_U_$$FMTE^BQIUL1(VSDTM)_U_VALUE_U_VIEN_U_LIEN_U_TIEN,QFL=1
  1. I RESULT="NEG",$E(VALUE,1)'?.N,'$$NEGATIVE(VALUE) Q
  1. I RESULT="NEG",$E(VALUE,1)'?.N,$$NEGATIVE(VALUE) D
  1. . S RES=1_U_$$FMTE^BQIUL1(VSDTM)_U_VALUE_U_VIEN_U_LIEN_U_TIEN,QFL=1
  1. I VALUE'?.PN,VALUE'?.N Q
  1. ;I $E(VALUE,$L(VALUE))?.P S VALUE=VALUE_"0"
  1. I $E(VALUE,$L(VALUE),$L(VALUE))?.P S VALUE=$E(VALUE,1,$L(VALUE)-1)
  1. ; if value starts with a punctuation e.g. < or >
  1. I $E(VALUE,1,1)?.P S ROPER=$E(VALUE,1,1),VALUE=$E(VALUE,2,$L(VALUE))
  1. I RES2="" D
  1. . I $G(ROPER)="",@("VALUE"_OPER_"RESULT") D Q
  1. .. S RES=1_U_$$FMTE^BQIUL1(VSDTM)_U_OVALUE_U_VIEN_U_LIEN_U_TIEN,QFL=1
  1. . I $G(ROPER)'="",OPER=ROPER,@("VALUE"_OPER_"RESULT") D Q
  1. .. S RES=1_U_$$FMTE^BQIUL1(VSDTM)_U_OVALUE_U_VIEN_U_LIEN_U_TIEN,QFL=1
  1. . I $G(ROPER)'="",OPER'=ROPER Q
  1. I RES2'="" D
  1. . I @("VALUE"_OPER_"RESULT"),@("VALUE"_OPER2_"RES2") D
  1. .. S RES=1_U_$$FMTE^BQIUL1(VSDTM)_U_OVALUE_U_VIEN_U_LIEN_U_TIEN,QFL=1
  1. Q