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

BKMIXX1.m

Go to the documentation of this file.
  1. BKMIXX1 ;PRXM/HC/BWF - TAXONOMY ACCESS UTILITIES ; 13 Apr 2005 4:50 PM
  1. ;;2.1;HIV MANAGEMENT SYSTEM;;Feb 07, 2011
  1. ; Generic Taxonomy Utilities
  1. ; Checks V-Files for patients that meet a Taxonomy's criteria, within
  1. ; a specific date range.
  1. ;
  1. ;**************NOTE***********************
  1. ; Input for all entry points are the same
  1. ;*****************************************
  1. ;
  1. ; Input:
  1. ; DFN = IEN from Patient file (#90000001)
  1. ; (required)
  1. ; TAX = Name of Taxonomy (From Lab Taxonomy ^ATXLAB or ICD Taxonomy ^ATXAX)
  1. ; (required)
  1. ; EDATE = End date of the report. The default is "Today"
  1. ; (optional)
  1. ; SDATE = Start date of the report.
  1. ; (optional)
  1. ; TARGET = Target root (global or local) for collection of data
  1. ; (optional)
  1. ; Example: ^TMP("RTN NAME",$J,"DESC",DFN,VSTDT,VISIT) or TEMP(VSTDT,VISIT)
  1. ; Output:
  1. ; LDATE = Last date found in the selected date range
  1. ; (optional - pass by reference)
  1. ; LIEN = Last IEN found in the selected date range
  1. ; (optional - pass by reference)
  1. ; CNT = Count of number of records found in selected date range
  1. ; (optional - pass by reference)
  1. ;
  1. Q
  1. ICDTAX(DFN,TAX,EDATE,SDATE,TARGET,LDATE,LIEN,CNT) ; PEP
  1. ; ICD Taxonomy Check (using V POV file) (includes POV)
  1. ;
  1. N TXIEN,TEST,VISIT,VSTDT,RESULT,ICD,CODE
  1. I DFN="" Q
  1. I TAX="" Q
  1. S TXIEN=$O(^ATXAX("B",TAX,""))
  1. I TXIEN="" Q
  1. S TEST="",CNT=0,LDATE=$G(LDATE,""),LIEN=$G(LIEN,"")
  1. F S TEST=$O(^AUPNVPOV("AC",DFN,TEST)) Q:TEST="" D
  1. .S ICD=$$GET1^DIQ(9000010.07,TEST,.01,"I")
  1. .I ICD="" Q
  1. .I $$ICD^BKMIXX5(ICD,TXIEN,9)=0 Q
  1. .S VISIT=$$GET1^DIQ(9000010.07,TEST,.03,"I")
  1. .S VSTDT=$$GET1^DIQ(9000010,VISIT_",",.01,"I")
  1. .I $G(SDATE)'="",(VSTDT<SDATE) Q
  1. .I $G(EDATE)'="",(VSTDT\1>EDATE) Q
  1. .I VSTDT>LDATE S LDATE=VSTDT,LIEN=TEST
  1. .I VSTDT=LDATE,TEST>LIEN S LDATE=VSTDT,LIEN=TEST
  1. .S RESULT=$$GET1^DIQ(9000010.07,TEST,.04,"E")
  1. .S CODE=$$GET1^DIQ(9000010.07,TEST,.01,"E")
  1. .S CNT=CNT+1
  1. .I $G(TARGET)]"" S @TARGET=RESULT_U_CODE
  1. Q
  1. ;
  1. PRCTAX(DFN,TAX,EDATE,SDATE,TARGET,LDATE,LIEN,CNT) ; PEP
  1. ; ICD Procedure Taxonomy Check
  1. ;
  1. N TXIEN,TEST,VISIT,VSTDT,RESULT,PRC
  1. I DFN="" Q
  1. I TAX="" Q
  1. S TXIEN=$O(^ATXAX("B",TAX,""))
  1. I TXIEN="" Q
  1. S TEST="",CNT=0,LDATE=$G(LDATE,""),LIEN=$G(LIEN,"")
  1. F S TEST=$O(^AUPNVPRC("AC",DFN,TEST)) Q:TEST="" D
  1. .S PRC=$$GET1^DIQ(9000010.08,TEST,.01,"I")
  1. .I PRC="" Q
  1. .I $$ICD^BKMIXX5(PRC,TXIEN,0)=0 Q
  1. .S VISIT=$$GET1^DIQ(9000010.08,TEST,.03,"I")
  1. .S VSTDT=$$GET1^DIQ(9000010,VISIT_",",.01,"I")
  1. .I $G(SDATE)'="",(VSTDT<SDATE) Q
  1. .I $G(EDATE)'="",(VSTDT\1>EDATE) Q
  1. .I VSTDT>LDATE S LDATE=VSTDT,LIEN=TEST
  1. .I VSTDT=LDATE,TEST>LIEN S LDATE=VSTDT,LIEN=TEST
  1. .S RESULT=$$GET1^DIQ(9000010.08,TEST,.04,"E")
  1. .S CNT=CNT+1
  1. .I $G(TARGET)]"" S @TARGET=RESULT
  1. Q
  1. ;
  1. PTEDTAX(DFN,TAX,EDATE,SDATE,TARGET,LDATE,LIEN,CNT) ; PEP
  1. ; Patient Education Taxonomy check (by Taxonomy)
  1. ; PTEDTAX^BKMIXX does this by Education Code List
  1. ;
  1. N TXIEN,TEST,VISIT,VSTDT,RESULT,PTED
  1. I DFN="" Q
  1. I TAX="" Q
  1. S TXIEN=$O(^ATXAX("B",TAX,""))
  1. I TXIEN="" Q
  1. S TEST="",CNT=0,LDATE=$G(LDATE,""),LIEN=$G(LIEN,"")
  1. F S TEST=$O(^AUPNVPED("AC",DFN,TEST)) Q:TEST="" D
  1. .S PTED=$$GET1^DIQ(9000010.16,TEST,.01,"E")
  1. .I PTED="" Q
  1. .I '$D(^ATXAX(TXIEN,21,"B",PTED)) Q
  1. .S VISIT=$$GET1^DIQ(9000010.16,TEST,.03,"I")
  1. .S VSTDT=$$GET1^DIQ(9000010,VISIT_",",.01,"I")
  1. .I $G(SDATE)'="",(VSTDT<SDATE) Q
  1. .I $G(EDATE)'="",(VSTDT\1>EDATE) Q
  1. .I VSTDT>LDATE S LDATE=VSTDT,LIEN=TEST
  1. .I VSTDT=LDATE,TEST>LIEN S LDATE=VSTDT,LIEN=TEST
  1. .S RESULT=$$GET1^DIQ(9000010.16,TEST,.04,"E")
  1. .S CNT=CNT+1
  1. .I $G(TARGET)]"" S @TARGET=RESULT
  1. Q
  1. ;
  1. CVXTAX(DFN,TAX,EDATE,SDATE,TARGET,LDATE,LIEN,CNT) ; PEP
  1. ; Immunization Taxonomy Check (includes Contraindicated Status)
  1. ;
  1. N TXIEN,TEST,VISIT,VSTDT,RESULT,CVX,CVXCODE,CONTRIND
  1. I DFN="" Q
  1. I TAX="" Q
  1. S TXIEN=$O(^ATXAX("B",TAX,""))
  1. I TXIEN="" Q
  1. S TEST="",CNT=0,LDATE=$G(LDATE,""),LIEN=$G(LIEN,"")
  1. F S TEST=$O(^AUPNVIMM("AC",DFN,TEST)) Q:TEST="" D
  1. .S CVX=$$GET1^DIQ(9000010.11,TEST,.01,"I")
  1. .I CVX="" Q
  1. .S CVXCODE=$$GET1^DIQ(9999999.14,CVX,.03,"E")
  1. .I CVXCODE="" Q
  1. .I '$D(^ATXAX(TXIEN,21,"B",CVXCODE)) Q
  1. .S VISIT=$$GET1^DIQ(9000010.11,TEST,.03,"I")
  1. .S VSTDT=$$GET1^DIQ(9000010,VISIT_",",.01,"I")
  1. .I $G(SDATE)'="",(VSTDT<SDATE) Q
  1. .I $G(EDATE)'="",(VSTDT\1>EDATE) Q
  1. .I VSTDT>LDATE S LDATE=VSTDT,LIEN=TEST
  1. .I VSTDT=LDATE,TEST>LIEN S LDATE=VSTDT,LIEN=TEST
  1. .S CONTRIND=$$GET1^DIQ(9000010.11,TEST,.07,"I")
  1. .S RESULT=$$GET1^DIQ(9000010.11,TEST,.04,"I")
  1. .S CNT=CNT+1
  1. .I $G(TARGET)]"" S @TARGET=RESULT_U_CONTRIND
  1. Q
  1. ;
  1. NDCTAX(DFN,TAX,EDATE,SDATE,TARGET,LDATE,LIEN,CNT) ; PEP
  1. ; Medication Taxonomy Check (using NDC Codes)
  1. ;
  1. N TXIEN,TEST,VISIT,VSTDT,RESULT,DRGPTR,NDC,SIG,QTY,DAY
  1. I DFN="" Q
  1. I TAX="" Q
  1. S TXIEN=$O(^ATXAX("B",TAX,""))
  1. I TXIEN="" Q
  1. S TEST="",CNT=0,LDATE=$G(LDATE,""),LIEN=$G(LIEN,"")
  1. F S TEST=$O(^AUPNVMED("AC",DFN,TEST)) Q:TEST="" D
  1. .S DRGPTR=$$GET1^DIQ(9000010.14,TEST,.01,"I")
  1. .I DRGPTR="" Q
  1. .S NDC=$$GET1^DIQ(50,DRGPTR,31,"I")
  1. .I NDC="" Q
  1. .I '$D(^ATXAX(TXIEN,21,"B",NDC)) Q
  1. .S VISIT=$$GET1^DIQ(9000010.14,TEST,.03,"I")
  1. .S VSTDT=$$GET1^DIQ(9000010,VISIT_",",.01,"I")
  1. .I $G(SDATE)'="",(VSTDT<SDATE) Q
  1. .I $G(EDATE)'="",(VSTDT\1>EDATE) Q
  1. .I VSTDT>LDATE S LDATE=VSTDT,LIEN=TEST
  1. .I VSTDT=LDATE,TEST>LIEN S LDATE=VSTDT,LIEN=TEST
  1. .S SIG=$$GET1^DIQ(9000010.14,TEST,.05,"E")
  1. .S QTY=$$GET1^DIQ(9000010.14,TEST,.06,"E")
  1. .S DAY=$$GET1^DIQ(9000010.14,TEST,.07,"E")
  1. .S RESULT=$$GET1^DIQ(9000010.14,TEST,.01,"E")
  1. .S CNT=CNT+1
  1. .I $G(TARGET)]"" S @TARGET=RESULT_U_SIG_U_QTY_U_DAY
  1. Q
  1. ;
  1. RADTAX(DFN,TAX,EDATE,SDATE,TARGET,LDATE,LIEN,CNT) ; PEP
  1. ; Radiology Taxonomy Check (using CPT Taxonomy)
  1. ;
  1. N TXIEN,TEST,VISIT,VSTDT,RESULT,RAD
  1. I DFN="" Q
  1. I TAX="" Q
  1. S TXIEN=$O(^ATXAX("B",TAX,""))
  1. I TXIEN="" Q
  1. S TEST="",CNT=0,LDATE=$G(LDATE,""),LIEN=$G(LIEN,"")
  1. F S TEST=$O(^AUPNVRAD("AC",DFN,TEST)) Q:TEST="" D
  1. .S RAD=$$GET1^DIQ(9000010.22,TEST,.019,"E")
  1. .I RAD="" Q
  1. .I $$ICD^BKMIXX5(RAD,TXIEN,1)=0 Q
  1. .S VISIT=$$GET1^DIQ(9000010.22,TEST,.03,"I")
  1. .S VSTDT=$$GET1^DIQ(9000010,VISIT_",",.01,"I")
  1. .I $G(SDATE)'="",(VSTDT<SDATE) Q
  1. .I $G(EDATE)'="",(VSTDT\1>EDATE) Q
  1. .I VSTDT>LDATE S LDATE=VSTDT,LIEN=TEST
  1. .I VSTDT=LDATE,TEST>LIEN S LDATE=VSTDT,LIEN=TEST
  1. .S RESULT=$$GET1^DIQ(9000010.22,TEST,.05,"E")
  1. .I RESULT="" S RESULT=$$GET1^DIQ(9000010.22,TEST,1101,"E")
  1. .S CNT=CNT+1
  1. .I $G(TARGET)]"" S @TARGET=RESULT
  1. Q
  1. ;
  1. ; For this entry point only:
  1. ;
  1. ; Input:
  1. ; TAX = EXAM CODE (external) to search for
  1. ; (required)
  1. ;
  1. ; Taxonomies not available for this type of data.
  1. ; Variables are still named the same for consistency with other functions.
  1. ;
  1. EXAMTAX(DFN,TAX,EDATE,SDATE,TARGET,LDATE,LIEN,CNT) ; PEP
  1. ; Patient Examination check (includes exam)
  1. ;
  1. N TXIEN,TEST,VISIT,VSTDT,RESULT,EXAM,CODE
  1. I DFN="" Q
  1. I TAX="" Q
  1. S TXIEN=$O(^AUTTEXAM("C",TAX,""))
  1. I TXIEN="" Q
  1. S TEST="",CNT=0,LDATE=$G(LDATE,""),LIEN=$G(LIEN,"")
  1. F S TEST=$O(^AUPNVXAM("AC",DFN,TEST)) Q:TEST="" D
  1. .S EXAM=$$GET1^DIQ(9000010.13,TEST,.01,"I")
  1. .I EXAM="" Q
  1. .I EXAM'=TXIEN Q
  1. .S VISIT=$$GET1^DIQ(9000010.13,TEST,.03,"I")
  1. .S VSTDT=$$GET1^DIQ(9000010,VISIT_",",.01,"I")
  1. .I $G(SDATE)'="",(VSTDT<SDATE) Q
  1. .I $G(EDATE)'="",(VSTDT\1>EDATE) Q
  1. .I VSTDT>LDATE S LDATE=VSTDT,LIEN=TEST
  1. .I VSTDT=LDATE,TEST>LIEN S LDATE=VSTDT,LIEN=TEST
  1. .S RESULT=$$GET1^DIQ(9000010.13,TEST,.04,"E")
  1. .S CODE=$$GET1^DIQ(9000010.13,TEST,.01,"E")
  1. .S CNT=CNT+1
  1. .I $G(TARGET)]"" S @TARGET=RESULT_U_CODE
  1. Q
  1. ;
  1. ; For this entry point only:
  1. ;
  1. ; Input:
  1. ; TAX = SKIN TEST CODE (external) to search for
  1. ; (required)
  1. ;
  1. ; Taxonomies not available for this type of data.
  1. ; Variables are still named the same for consistency with other functions.
  1. ;
  1. SKNTAX(DFN,TAX,EDATE,SDATE,TARGET,LDATE,LIEN,CNT) ; PEP
  1. ; Skin Test check
  1. ;
  1. N TXIEN,TEST,VISIT,VSTDT,RESULT,SKIN
  1. I DFN="" Q
  1. I TAX="" Q
  1. S TXIEN=$O(^AUTTSK("C",TAX,""))
  1. I TXIEN="" Q
  1. S TEST="",CNT=0,LDATE=$G(LDATE,""),LIEN=$G(LIEN,"")
  1. F S TEST=$O(^AUPNVSK("AC",DFN,TEST)) Q:TEST="" D
  1. .S SKIN=$$GET1^DIQ(9000010.12,TEST,.01,"I")
  1. .I SKIN="" Q
  1. .I SKIN'=TXIEN Q
  1. .S VISIT=$$GET1^DIQ(9000010.12,TEST,.03,"I")
  1. .S VSTDT=$$GET1^DIQ(9000010,VISIT_",",.01,"I")
  1. .I $G(SDATE)'="",(VSTDT<SDATE) Q
  1. .I $G(EDATE)'="",(VSTDT\1>EDATE) Q
  1. .I VSTDT>LDATE S LDATE=VSTDT,LIEN=TEST
  1. .I VSTDT=LDATE,TEST>LIEN S LDATE=VSTDT,LIEN=TEST
  1. .; Modified code to include the result as well as the reading
  1. .S RESULT=$$GET1^DIQ(9000010.12,TEST,.05,"E")_U_$$GET1^DIQ(9000010.12,TEST,.04,"E")
  1. .S CNT=CNT+1
  1. .I $G(TARGET)]"" S @TARGET=RESULT
  1. Q