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

BQIDCREM.m

Go to the documentation of this file.
  1. BQIDCREM ;GDIT/HS/ALA-Reminders Panel Definition ; 07 Dec 2012 2:18 PM
  1. ;;2.5;ICARE MANAGEMENT SYSTEM;**2**;May 24, 2016;Build 14
  1. ;
  1. Q
  1. ;
  1. EN(DATA,PARMS,MPARMS) ;EP - Find records
  1. ;
  1. ;Description
  1. ; Executable that finds all patients who have a reminder
  1. ;Input
  1. ; PARMS = Array of parameters and their values
  1. ; MPARMS = Multiple array of a parameter
  1. ;Expected to return FDATA
  1. ;
  1. NEW UID,VDATA,DFN,RIEN,PTMFRAME,PVISITS,FUT,OVD,RMDFROM,RMDTHRU
  1. NEW CAT,TYP,PROV,NOTA,SPEC,QFL,VISIT,VSDTM,RMDRANGE
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQIDCREM",UID))
  1. S FDATA=$NA(^TMP("BQIFND",UID))
  1. S VDATA=$NA(^TMP("BQIVIS",UID))
  1. S DCRIT=$NA(^TMP("BQICRIT",UID))
  1. K @DATA,@DCRIT,@VDATA,@FDATA
  1. ;
  1. ; Set the parameters into variables
  1. I '$D(PARMS) Q
  1. ;
  1. S NM="" F S NM=$O(PARMS(NM)) Q:NM="" S @NM=PARMS(NM)
  1. S REMCODE=$G(REMCODE,""),OVD=$G(OVD,""),FUT=$G(FUT,"")
  1. S PROV=$G(PROV,""),RMDFROM=$G(RMDFROM,""),RMDTHRU=$G(RMDTHRU,"")
  1. I $G(RMDRANGE)'="" D
  1. . I $G(PPIEN)'="" D RANGE^BQIDCAH1(RMDRANGE,PPIEN,"RMDRANGE")
  1. . S RFDT=$S($G(RFROM)'="":RFROM,1:$G(RMDFROM))
  1. . S REDT=$S($G(RTHRU)'="":RTHRU,1:$G(RMDTHRU))
  1. I $G(RMDFROM)'="" S RFDT=RMDFROM,REDT=$G(RMDTHRU)
  1. D PROV
  1. ;
  1. I $D(MPARMS("REMCODE")) D Q
  1. . S REMCODE=""
  1. . F S REMCODE=$O(MPARMS("REMCODE",REMCODE)) Q:REMCODE="" D SRC
  1. D SRC
  1. K @FDATA
  1. Q
  1. ;
  1. SRC ;EP - Search and find
  1. I $D(@FDATA) S DFN="" D
  1. . F S DFN=$O(@FDATA@(DFN)) Q:DFN="" D RMF
  1. Q
  1. ;
  1. RMF ;EP - Find reminder
  1. S RIEN=$O(^BQIPAT(DFN,40,"B",REMCODE,""))
  1. I RIEN="" Q
  1. S RDATA=$G(^BQIPAT(DFN,40,RIEN,0)) I RDATA="" Q
  1. I $P(RDATA,U,3)=""!($P(RDATA,U,3)="N/A") Q
  1. ;
  1. I FUT'="" D Q
  1. . I $P(RDATA,U,3)="DUE NOW" Q
  1. . ;I $P(RDATA,U,3)="RESOLVED" S @DATA@(DFN)="" Q
  1. . I $P(RDATA,U,3)="RESOLVED" Q
  1. . I $P(RDATA,U,3)="DONE" Q
  1. . I $P(RDATA,U,4)'="" D
  1. .. I $G(RFDT)'="" D
  1. ... I $P(RDATA,U,4)<RFDT!($P(RDATA,U,4)>REDT) Q
  1. ... S @DATA@(DFN)="",@DCRIT@("REM",DFN,REMCODE)=""
  1. .. I $G(RFDT)="",$P(RDATA,U,4)>DT S @DATA@(DFN)="",@DCRIT@("REM",DFN,REMCODE)="" Q
  1. ;
  1. I OVD'="" D Q
  1. . I $P(RDATA,U,3)="RESOLVED" Q
  1. . I $P(RDATA,U,3)="DONE" Q
  1. . I $P(RDATA,U,4)>DT Q
  1. . S @DATA@(DFN)="",@DCRIT@("REM",DFN,REMCODE)=""
  1. Q
  1. ;
  1. PROV ;EP -
  1. ;
  1. NEW TMFRAME,VISITS,FDT,TDT,IEN,RFROM,RTHRU
  1. I $G(DT)="" D DT^DICRW
  1. S VISITS=$G(PVISITS,"")
  1. I $G(PPIEN)'="",$G(PTMFRAME)'="" D RANGE^BQIDCAH1(PTMFRAME,PPIEN,"PTMFRAME")
  1. S FDT=$S($G(RFROM)'="":RFROM,1:$G(PFROM))
  1. S TDT=$S($G(RTHRU)'="":RTHRU,1:$G(PTHRU))
  1. S TDT=DT
  1. I $G(PROV)'="" D PV Q
  1. Q
  1. ;
  1. ; Go through the V PROVIDER File for the designated provider and
  1. ; find out if they are a primary or secondary provider AND if the
  1. ; visit falls within the time frame
  1. PV ;
  1. S IEN=""
  1. F S IEN=$O(^AUPNVPRV("B",PROV,IEN),-1) Q:IEN="" D
  1. . S VISIT=$$GET1^DIQ(9000010.06,IEN_",",.03,"I") I VISIT="" Q
  1. . S VSDTM=$$GET1^DIQ(9000010,VISIT_",",.01,"I")\1 I VSDTM=0 Q
  1. . S DFN=$$GET1^DIQ(9000010.06,IEN_",",.02,"I") I DFN="" Q
  1. . ;
  1. . I FDT'="" S QFL=0 D Q:QFL
  1. .. I VSDTM'<FDT,VSDTM'>TDT Q
  1. .. S QFL=1
  1. . ; Count number of visits for a patient
  1. . S @VDATA@(DFN)=$G(@VDATA@(DFN))+1
  1. ;
  1. S DFN=""
  1. F S DFN=$O(@VDATA@(DFN)) Q:DFN="" D
  1. . ; if the number of visits for patient doesn't match the criteria, quit
  1. . I @VDATA@(DFN)<VISITS Q ;Changed from '= to <
  1. . S @FDATA@(DFN)=""
  1. ;
  1. K @VDATA
  1. Q