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

BQIDCAPC.m

Go to the documentation of this file.
  1. BQIDCAPC ;GDIT/HS/ALA-Scheduled Visits by Clinic Stop ; 21 Nov 2005 6:04 PM
  1. ;;2.3;ICARE MANAGEMENT SYSTEM;**3,4**;Apr 18, 2012;Build 66
  1. ;
  1. Q
  1. ;
  1. APT(DATA,PARMS,MPARMS) ;EP
  1. ;
  1. ;Description
  1. ; Executable to retrieve patients which have appointments in a hospital location that
  1. ; is associated with a clinical stop code.
  1. ;Input
  1. ; PARMS = Array of parameters and their values
  1. ; MPARMS = Multiple array of a parameter
  1. ;Expected to return DATA
  1. ;Parameters
  1. ; CLIN = Clinic Stop Code parameter
  1. ; LOC = Hosp Location internal entry number associated with CLIN
  1. ; FDT = Starting date for the FROM date parameter
  1. ; EDT = Ending date for the THRU date parameter
  1. ; DFN = Patient internal entry number
  1. ; APSTAT = Appointment status
  1. ;
  1. NEW II,UID
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQIDCAPC",UID))
  1. K @DATA
  1. S II=0
  1. ;
  1. FND ; Find the patients with appts for one or more clinic stop codes
  1. NEW CLIN,FROM,THRU,LOC,NM,N,FRDT,ENDT,LABEL,APST,STOP,FDT,EDT,DFN,LABEL
  1. NEW STR,SLOC,STAT,APSTAT,APTYPE,APRANGE,RFROM,RTHRU
  1. S NM=""
  1. F S NM=$O(PARMS(NM)) Q:NM="" S @NM=PARMS(NM)
  1. I $G(APTYPE)'="" D
  1. . NEW MIEN,MAPS
  1. . S MIEN=$O(^BQI(90506,10,3,8,3,"B",APTYPE,"")) I MIEN="" Q
  1. . S MAPS=$P(^BQI(90506,10,3,8,3,MIEN,0),U,2)
  1. . F N=1:1:$L(MAPS,"~") S NM=$P($P(MAPS,"~",N),"=",1),MPARMS(NM,$P($P(MAPS,"~",N),"=",2))=""
  1. ;
  1. I $D(MPARMS("APTYPE"))>0 D
  1. . NEW MPM,MIEN,MAPS
  1. . S MPM=""
  1. . F S MPM=$O(MPARMS("APTYPE",MPM)) Q:MPM="" D
  1. .. S MIEN=$O(^BQI(90506,10,3,8,3,"B",MPM,"")) I MIEN="" Q
  1. .. S MAPS=$P(^BQI(90506,10,3,8,3,MIEN,0),U,2)
  1. .. F N=1:1:$L(MAPS,"~") S NM=$P($P(MAPS,"~",N),"=",1),MPARMS(NM,$P($P(MAPS,"~",N),"=",2))=""
  1. ;
  1. S LABEL="FND1" D
  1. . I $G(APSTAT)'="",APSTAT'="AC",APSTAT["C" S LABEL="FNDALL" Q
  1. . I $D(MPARMS("APSTAT")) D Q
  1. .. S APST="",STOP=""
  1. .. F S APST=$O(MPARMS("APSTAT",APST)) Q:APST="" D Q:STOP
  1. ... I APST'="AC",APST["C" S LABEL="FNDALL",STOP=1 Q
  1. I LABEL="FNDALL" D FNDALL Q
  1. I $G(CLIN)]"" D FND1
  1. I $D(MPARMS("CLIN")) S CLIN="" F S CLIN=$O(MPARMS("CLIN",CLIN)) Q:CLIN="" D FND1
  1. Q
  1. ;
  1. FND1 ; Check one clinic stop code
  1. ; If timeframe is selected populate start and end dates
  1. I $G(APRANGE)'="",$G(PPIEN)'="" D RANGE^BQIDCAH1(APRANGE,PPIEN,"APRANGE")
  1. S LOC=""
  1. F S LOC=$O(^SC("ASTOP",CLIN,LOC)) Q:LOC="" D
  1. . S FDT=$S($G(RFROM)'="":RFROM,1:$G(FROM))
  1. . S EDT=$S($G(RTHRU)'="":RTHRU,1:$G(THRU))
  1. . NEW APCHK
  1. . F S FDT=$O(^SC(LOC,"S",FDT)) Q:FDT=""!(FDT\1>EDT) D
  1. .. S N=0
  1. .. F S N=$O(^SC(LOC,"S",FDT,1,N)) Q:'N D
  1. ... NEW DA,IENS
  1. ... S DA(2)=LOC,DA(1)=FDT,DA=N,IENS=$$IENS^DILF(.DA)
  1. ... S DFN=$$GET1^DIQ(44.003,IENS,.01,"I") I DFN="" Q
  1. ... ; User may now select Living, Deceased or both as a filter so
  1. ... ; if no filters defined assume living patients otherwise let filter decide
  1. ... ;I $O(^BQICARE(OWNR,1,PLIEN,15,0))="",$P($G(^DPT(DFN,.35)),U,1)'="" Q
  1. ... I '$$HRN^BQIUL1(DFN) Q
  1. ... ; If patient has no visit in last 3 years, quit
  1. ... ;I '$$VTHR^BQIUL1(DFN) Q
  1. ... I $G(APSTAT)'="" D Q
  1. .... I $G(APSTAT)="AC" S APCHK=""
  1. .... I $G(APSTAT)'="AC" S APCHK=APSTAT
  1. .... I $P($G(^DPT(DFN,"S",FDT,0)),U,2)'=APCHK Q
  1. .... S @DATA@(DFN)=""
  1. ... I $D(MPARMS("APSTAT")) D Q
  1. .... S APST=""
  1. .... F S APST=$O(MPARMS("APSTAT",APST)) Q:APST="" D
  1. ..... I $G(APST)="AC" S APCHK=""
  1. ..... I $G(APST)'="AC" S APCHK=APST
  1. ..... I $P($G(^DPT(DFN,"S",FDT,0)),U,2)'=APCHK Q
  1. ..... S @DATA@(DFN)=""
  1. ... ;S @DATA@(DFN)=""
  1. Q
  1. ;
  1. FNDALL ; Loop through all patients since cancelled status selected
  1. ; If timeframe is selected populate start and end dates
  1. NEW FRDT,ENDT
  1. I $G(APRANGE)'="",$G(PPIEN)'="" D RANGE^BQIDCAH1(APRANGE,PPIEN,"APRANGE")
  1. S FRDT=$S($G(RFROM)'="":RFROM,1:$G(FROM))
  1. S ENDT=$S($G(RTHRU)'="":RTHRU,1:$G(THRU))
  1. I $G(CLIN)]"" D
  1. .S LOC=""
  1. .F S LOC=$O(^SC("ASTOP",CLIN,LOC)) Q:LOC="" S LOC(LOC)=""
  1. I $D(MPARMS("CLIN")) D
  1. . S CLIN=""
  1. . F S CLIN=$O(MPARMS("CLIN",CLIN)) Q:CLIN="" D
  1. .. S LOC=""
  1. .. F S LOC=$O(^SC("ASTOP",CLIN,LOC)) Q:LOC="" S LOC(LOC)=""
  1. NEW APCHK
  1. S DFN=0
  1. F S DFN=$O(^DPT(DFN)) Q:'DFN D
  1. . ; *disabled* since user may now select Living, Deceased or both as a filter
  1. . ;I $P($G(^DPT(DFN,.35)),U,1)'="" Q
  1. . I '$$HRN^BQIUL1(DFN) Q
  1. . ; If patient has no visit in last 3 years, quit
  1. . ;I '$$VTHR^BQIUL1(DFN) Q
  1. . S FDT=FRDT,EDT=ENDT
  1. . F S FDT=$O(^DPT(DFN,"S",FDT)) Q:'FDT!(FDT\1>EDT) D
  1. .. S STR=$G(^DPT(DFN,"S",FDT,0)) I STR="" Q
  1. .. S SLOC=$P(STR,U),STAT=$P(STR,U,2) I SLOC="" Q
  1. .. I '$D(LOC(SLOC)) Q
  1. .. I $D(APSTAT) D Q
  1. ... I APSTAT="AC",STAT'="" Q
  1. ... I STAT'=APSTAT Q
  1. ... S @DATA@(DFN)=""
  1. .. I $D(MPARMS("APSTAT")) D Q
  1. ... I STAT'="",'$D(MPARMS("APSTAT",STAT)) Q
  1. ... I STAT="",'$D(MPARMS("APSTAT","AC")) Q
  1. ... S @DATA@(DFN)=""
  1. .. S @DATA@(DFN)=""
  1. Q