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

BQIDCUTL.m

Go to the documentation of this file.
  1. BQIDCUTL ;VNGT/HS/ALA-Definition Utility ; 12 Sep 2008 1:43 PM
  1. ;;2.4;ICARE MANAGEMENT SYSTEM;**2**;Apr 01, 2015;Build 10
  1. ;
  1. LAB(BQDFN,TEST) ;EP - Check for most recent result of a specified Lab test
  1. ;
  1. ; Input
  1. ; BQDFN - Patient internal entry number
  1. ; TEST - Lab Test IEN to search
  1. ;
  1. NEW LIEN,QFL,RES,TIEN,VALUE,VIEN,VSDTM,UID
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S TEMP=$NA(^TMP(UID,"BQIVLAB")) K @TEMP
  1. S LIEN="",QFL=0,RES=0
  1. F S LIEN=$O(^AUPNVLAB("AC",BQDFN,LIEN),-1) Q:LIEN="" D Q:QFL
  1. . S TIEN=$P($G(^AUPNVLAB(LIEN,0)),U,1) I TIEN="" Q
  1. . I TIEN'=TEST 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. . ; quit if deleted flag
  1. . I $P($G(^AUPNVSIT(VIEN,0)),"^",11)=1 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. . S @TEMP@(VSDTM,VIEN,LIEN)=VALUE
  1. ;
  1. S VSDTM=$O(@TEMP@(""),-1)
  1. I VSDTM'="" D
  1. . S VIEN=$O(@TEMP@(VSDTM,""),-1)
  1. . S LIEN=$O(@TEMP@(VSDTM,VIEN,""),-1)
  1. . S VALUE=@TEMP@(VSDTM,VIEN,LIEN)
  1. . S RES=1_U_$$FMTE^BQIUL1(VSDTM)_U_VALUE_U_VIEN_U_LIEN_U_VSDTM,QFL=1
  1. K @TEMP
  1. Q RES
  1. ;
  1. MEAS(BQDFN,MEAS) ;EP - Find most recent value for a measurement
  1. ;
  1. ; Input
  1. ; BQDFN - Patient internal entry number
  1. ; MEAS - Measurement IEN to search
  1. ;
  1. NEW LIEN,QFL,RES,TIEN,VALUE,VIEN,VSDTM,TEMP,UID
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S TEMP=$NA(^TMP(UID,"BQIVMSR")) K @TEMP
  1. ;
  1. I MEAS'?.N S MEAS=$$FIND1^DIC(9999999.07,,"MX",MEAS)
  1. I MEAS=0 Q 0
  1. S LIEN="",QFL=0,RES=0
  1. F S LIEN=$O(^AUPNVMSR("AC",BQDFN,LIEN),-1) Q:LIEN="" D
  1. . S TIEN=$P($G(^AUPNVMSR(LIEN,0)),U,1) I TIEN="" Q
  1. . I TIEN'=MEAS Q
  1. . ; if the new ENTERED IN ERROR field exists, exclude the record if it is marked as an error
  1. . I $$VFIELD^DILFD(9000010.01,2) Q:$$GET1^DIQ(9000010.01,LIEN_",",2,"I")=1
  1. . S VALUE=$P(^AUPNVMSR(LIEN,0),U,4) I VALUE="" Q
  1. . S VIEN=$P(^AUPNVMSR(LIEN,0),U,3) I VIEN="" Q
  1. . ; quit if deleted flag
  1. . I $P($G(^AUPNVSIT(VIEN,0)),"^",11)=1 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. . S @TEMP@(VSDTM,VIEN,LIEN)=VALUE
  1. ;
  1. S VSDTM=$O(@TEMP@(""),-1)
  1. I VSDTM'="" D
  1. . S VIEN=$O(@TEMP@(VSDTM,""),-1)
  1. . S LIEN=$O(@TEMP@(VSDTM,VIEN,""),-1)
  1. . S VALUE=@TEMP@(VSDTM,VIEN,LIEN)
  1. . S RES=1_U_$$FMTE^BQIUL1(VSDTM)_U_VALUE_U_VIEN_U_LIEN_U_VSDTM
  1. K @TEMP
  1. Q RES
  1. ;
  1. HMEAS(BQDFN,MEAS) ;EP - Find highest value for a measurement
  1. ;
  1. ; Input
  1. ; BQDFN - Patient internal entry number
  1. ; MEAS - Measurement IEN to search
  1. ;
  1. NEW LIEN,QFL,RES,TIEN,VALUE,VIEN,VSDTM,TEMP,UID
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S TEMP=$NA(^TMP(UID,"BQIVMSR")) K @TEMP
  1. I MEAS'?.N S MEAS=$$FIND1^DIC(9999999.07,,"MX",MEAS)
  1. I MEAS=0 Q 0
  1. S LIEN="",QFL=0,RES=0
  1. F S LIEN=$O(^AUPNVMSR("AC",BQDFN,LIEN),-1) Q:LIEN="" D
  1. . S TIEN=$P($G(^AUPNVMSR(LIEN,0)),U,1) I TIEN="" Q
  1. . I TIEN'=MEAS Q
  1. . ; if the new ENTERED IN ERROR field exists, exclude the record if it is marked as an error
  1. . I $$VFIELD^DILFD(9000010.01,2) Q:$$GET1^DIQ(9000010.01,LIEN_",",2,"I")=1
  1. . S VALUE=$P(^AUPNVMSR(LIEN,0),U,4) I VALUE="" Q
  1. . S VIEN=$P(^AUPNVMSR(LIEN,0),U,3) I VIEN="" Q
  1. . ; quit if deleted flag
  1. . I $P($G(^AUPNVSIT(VIEN,0)),"^",11)=1 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. . S @TEMP@(VALUE,VSDTM,VIEN,LIEN)=""
  1. ;
  1. S VALUE=$O(@TEMP@(""),-1)
  1. I VALUE'="" D
  1. . S VSDTM=$O(@TEMP@(VALUE,""),-1)
  1. . S VIEN=$O(@TEMP@(VALUE,VSDTM,""),-1)
  1. . S LIEN=$O(@TEMP@(VALUE,VSDTM,VIEN,""),-1)
  1. . ;S VALUE=@TEMP@(VALUE,VSDTM,VIEN,LIEN)
  1. . S RES=1_U_$$FMTE^BQIUL1(VSDTM)_U_VALUE_U_VIEN_U_LIEN
  1. K @TEMP
  1. Q RES
  1. ;
  1. VISIT(BQDFN,FREF,TXRY,SERV,CLNRY,PRIM,TEMP) ; EP - Get Last Visit
  1. ;Input Parameters
  1. ; BQDFN - Patient IEN
  1. ; FREF - V File Reference number
  1. ; TXRY - List of taxonomies whose entries are applicable
  1. ; SERV - Service Category (code separated by ;) e.g. A;H
  1. ; CLNRY - List of locations where the visit is applicable
  1. ; PRIM - If one, value must be a primary diagnosis
  1. ; TEMP - Array to return the list of found visits
  1. ;
  1. NEW TREF,IEN,TAX,TIEN,VISIT,VSDTM,CLINIC,CLN,GREF,OPRM,VSERV
  1. S GREF=$$ROOT^DILFD(FREF,"",1),PRIM=$G(PRIM,0)
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S TREF=$NA(^TMP(UID,"BQITAX"))
  1. K @TREF,TEMP
  1. ; Check for a list of taxonomies
  1. D
  1. . S TAX=""
  1. . F S TAX=$O(TXRY(TAX)) Q:TAX="" D BLD^BQITUTL(TAX,TREF)
  1. ;
  1. S IEN=""
  1. F S IEN=$O(@GREF@("AC",BQDFN,IEN),-1) Q:IEN="" D
  1. . S TIEN=$$GET1^DIQ(FREF,IEN,.01,"I") Q:TIEN=""
  1. . ; Check if the record has an applicable taxonomy entry
  1. . I '$D(@TREF@(TIEN)) Q
  1. . S VISIT=$$GET1^DIQ(FREF,IEN,.03,"I") Q:VISIT=""
  1. . ;I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. . I $P($G(^AUPNVSIT(VISIT,0)),"^",11)=1 Q
  1. . ; If dependent count is one, quit
  1. . I $P($G(^AUPNVSIT(VISIT,0)),"^",9)=1 Q
  1. . ; If the V File reference is V POV and the primary diagnosis flag is defined
  1. . ; check if the value is a primary diagnosis
  1. . I FREF=9000010.07,PRIM,$P(@GREF@(IEN,0),U,12)'="P" S OPRM=0 D Q:'OPRM
  1. .. I $O(@GREF@("AD",VISIT,""))=IEN S OPRM=1
  1. . ;S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:'VSDTM
  1. . S VSDTM=$P($G(^AUPNVSIT(VISIT,0)),"^",1)\1 I VSDTM=0 Q
  1. . ;I $G(TMFRAME)'="",VSDTM<ENDT Q
  1. . ; If service categories, check the visit for the service category
  1. . ;S VSERV=$$GET1^DIQ(9000010,VISIT,.07,"I")
  1. . S VSERV=$P($G(^AUPNVSIT(VISIT,0)),"^",7)
  1. . I $G(SERV)'="",SERV'[VSERV Q
  1. . ; If locations, check the visit for a matching location
  1. . ;S CLN=$$GET1^DIQ(9000010,VISIT,.08,"I")
  1. . S CLN=$P($G(^AUPNVSIT(VISIT,0)),"^",8),CLINIC=""
  1. . ;S CLINIC=$$GET1^DIQ(40.7,CLN_",",1,"E")
  1. . I CLN'="" S CLINIC=$P($G(^DIC(40.7,CLN,0)),"^",2)
  1. . I CLINIC'="",$D(CLNRY),'$D(CLNRY(CLINIC)) Q
  1. . S TEMP(VSDTM,IEN)=VISIT
  1. Q
  1. ;
  1. PROB(BQDFN,TXRY,TEMP) ; EP - Get Last Problem
  1. ;Input Parameters
  1. ; BQDFN - Patient IEN
  1. ; TXRY - List of taxonomies whose entries are applicable
  1. ; TEMP - Array to return the list of found visits
  1. ;
  1. NEW TREF,IEN,TAX,TIEN,PRDTM
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S TREF=$NA(^TMP(UID,"BQITAX"))
  1. K @TREF,TEMP
  1. ; Check for a list of taxonomies
  1. D
  1. . S TAX=""
  1. . F S TAX=$O(TXRY(TAX)) Q:TAX="" D BLD^BQITUTL(TAX,TREF)
  1. ;
  1. S IEN=""
  1. F S IEN=$O(^AUPNPROB("AC",BQDFN,IEN),-1) Q:IEN="" D
  1. . S TIEN=$$GET1^DIQ(9000011,IEN,.01,"I") Q:TIEN=""
  1. . ; Check if the record has an applicable taxonomy entry
  1. . I '$D(@TREF@(TIEN)) Q
  1. . S PRDTM=$P(^AUPNPROB(IEN,0),U,8)
  1. . I PRDTM="" S PRDTM=$$PROB^BQIUL1(IEN)
  1. . I PRDTM="" Q
  1. . S TEMP(PRDTM,IEN)=""
  1. Q
  1. ;
  1. HF(BQDFN,HFACT) ;EP - Find most recent value for a Health Factor
  1. ; Input
  1. ; BQDFN - Patient internal entry number
  1. ; HFACT - Health Factor to search for
  1. ;
  1. NEW VISIT,HIEN,VSDTM,TEMP,UID,RESULT,ATRDT
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S TEMP=$NA(^TMP(UID,"BQIVHF")) K @TEMP
  1. ;
  1. S RESULT=""
  1. I HFACT'?.N S HFACT=$$FIND1^DIC(9999999.64,,"MX",HFACT)
  1. I HFACT=0 Q RESULT
  1. ;
  1. D
  1. . S ATRDT=$O(^AUPNVHF("AA",BQDFN,HFACT,"")) I ATRDT="" Q
  1. . S HIEN=$O(^AUPNVHF("AA",BQDFN,HFACT,ATRDT,"")) I HIEN="" Q
  1. . S VISIT=$P(^AUPNVHF(HIEN,0),U,3) I VISIT="" Q
  1. . S VSDTM=$P(^AUPNVSIT(VISIT,0),U,1)\1 I VSDTM=0 Q
  1. . S RESULT=VSDTM_U_"9000010:"_VISIT
  1. Q RESULT