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

BQICAPT.m

Go to the documentation of this file.
  1. BQICAPT ;GDIT/HS/ALA-Community Alerts Patients ; 16 Oct 2011 11:49 AM
  1. ;;2.5;ICARE MANAGEMENT SYSTEM;;May 24, 2016;Build 27
  1. ;
  1. EN(DATA,PARMS) ; EP - BQI GET COMM ALERTS PATIENTS
  1. ; Gets a list of patients that go along with community alerts
  1. ; Input parameters
  1. ; PARMS - Parameters of communities and dx categories
  1. ;
  1. NEW UID,II,DATE,IEN,COMM,TYP,TYPE,ADATE,ASSOC,BGPHOME,BQ,BQI,BQIINDF,BQIINDG,BQIMEASF
  1. NEW BQIMEASG,BQIROU,BQIY,BQIYR,CIEN,BN,DCAT,DCN,DXC,DXN,FILE,HDR,HEADR,LOOK,OCDT,ORD
  1. NEW PAT,QFL,RECORD,TEMP,VAL,VALUE,NAFLG,NAME,PDATA,DXCAT,PATNAM,NVAL,TCAT,LBN
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQICAPT",UID)),TEMP=$NA(^TMP("BQITMP",UID))
  1. K @DATA,@TEMP
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQICAPT D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. S PARMS=$G(PARMS,"")
  1. I PARMS="" D
  1. . S LIST="",BN=""
  1. . F S BN=$O(PARMS(BN)) Q:BN="" S LIST=LIST_PARMS(BN)
  1. . K PARMS
  1. . S PARMS=LIST
  1. . K LIST
  1. ;
  1. I PARMS'="" D
  1. . F BQ=1:1:$L(PARMS,$C(28)) D
  1. .. S PDATA=$P(PARMS,$C(28),BQ) Q:PDATA=""
  1. .. S NAME=$P(PDATA,"=",1),VALUE=$P(PDATA,"=",2,99)
  1. .. F BQI=1:1:$L(VALUE,$C(29)) D
  1. ... S VAL=$P(VALUE,$C(29),BQI),ASSOC=$P(VAL,$C(25),2,99)
  1. ... I NAME="COMM" S CIEN=$P(VAL,$C(25),1),COMM(CIEN)=""
  1. ... I NAME="DX" D
  1. .... S DXC=$P(VAL,$C(25),1)
  1. .... ;S TIEN=$$FIND1^DIC(90507.8,"","BX",TYPE,"","","ERROR")
  1. .... S DXCAT(DXC)=""
  1. ... I ASSOC="" Q
  1. ... S NAME=$P(ASSOC,"=",1),NVAL=$P(ASSOC,"=",2,99)
  1. ... I NAME="DX" D
  1. .... F BQQ=1:1:$L(NVAL,$C(24)) S DXC=$P(NVAL,$C(24),BQQ),DXCAT(DXC)=""
  1. . I '$D(COMM) D ACOM
  1. . I '$D(DXCAT) D ADXC
  1. ;
  1. I PARMS="" D
  1. . D ACOM
  1. . D ADXC
  1. ;
  1. S CIEN=""
  1. F S CIEN=$O(COMM(CIEN)) Q:CIEN="" D
  1. . D COM(CIEN)
  1. D SOR
  1. Q
  1. ;
  1. ACOM ; Get all communities
  1. K COMM
  1. NEW CIEN
  1. S CIEN=0
  1. F S CIEN=$O(^BQI(90507.6,CIEN)) Q:'CIEN S COMM(CIEN)=""
  1. Q
  1. ;
  1. ADXC ; Get all types
  1. K TYP
  1. NEW TIEN,NAM
  1. S TIEN=0
  1. F S TIEN=$O(^BQI(90507.8,TIEN)) Q:'TIEN S DXCAT($P(^BQI(90507.8,TIEN,0),U,1))=""
  1. F NAM="Attempt","Ideation","Completion" S DXCAT(NAM)=""
  1. Q
  1. ;
  1. COM(CIEN) ;EP
  1. S COMM=$$GET1^DIQ(90507.6,CIEN_",",.01,"E")
  1. ; Get the type of the alert, either CDC NND or Suicide
  1. S TYP=0
  1. F S TYP=$O(^BQI(90507.6,CIEN,1,TYP)) Q:'TYP D FND(CIEN,TYP)
  1. Q
  1. ;
  1. FND(CIEN,TYP) ;EP
  1. S TYPE=$P(^BQI(90507.6,CIEN,1,TYP,0),U,1)
  1. NEW DA,IENS,BQIH,BQI,SDATE
  1. S BQIH=$$SPM^BQIGPUTL()
  1. S BQI=$O(^BQI(90508,BQIH,15,"B",TYPE,""))
  1. S DA(1)=BQIH,DA=BQI,IENS=$$IENS^DILF(.DA)
  1. S SDATE=$$GET1^DIQ(90508.015,IENS,.03,"E")
  1. I SDATE="" S SDATE=30
  1. I SDATE'="" S ADATE=$$DATE^BQIUL1("T-"_SDATE)
  1. ; Get the Diagnosis Category
  1. S DCAT=""
  1. F S DCAT=$O(DXCAT(DCAT)) Q:DCAT="" D
  1. . S DXC=$O(^BQI(90507.6,CIEN,1,TYP,1,"B",$E(DCAT,1,30),""))
  1. . I DXC="" Q
  1. . I TYPE'="Suicidal Behavior" S QFL=0 D Q:QFL
  1. .. S DCN=$$FIND1^DIC(90507.8,"","BX",DCAT,"","","ERROR")
  1. .. I DCN=0 S QFL=1 Q
  1. .. S LOOK=$$VAL^BQICAVW(DUZ,DCN)
  1. .. I $P(LOOK,U,1)="OFF"!($P(LOOK,U,1)=0) S QFL=1 Q
  1. .. S ADATE=$P(LOOK,U,2)
  1. . S DXN=0
  1. . F S DXN=$O(^BQI(90507.6,CIEN,1,TYP,1,DXC,1,DXN)) Q:'DXN D
  1. .. NEW DA,IENS
  1. .. S DA(3)=CIEN,DA(2)=TYP,DA(1)=DXC,DA=DXN,IENS=$$IENS^DILF(.DA)
  1. .. S OCDT=$P(^BQI(90507.6,CIEN,1,TYP,1,DXC,1,DXN,0),U,2)
  1. .. I (OCDT\1)'>ADATE Q
  1. .. S PAT=$P(^BQI(90507.6,CIEN,1,TYP,1,DXC,1,DXN,0),U,4),RECORD=$P(^(0),U,3),FILE=$P(^(0),U,5),VISIT=$P(^(0),U,6)
  1. .. S PATNAM=$P($G(^DPT(PAT,0)),U,1) S:PATNAM="" PATNAM="~"
  1. .. I FILE=9000010 S VISIT=RECORD
  1. .. S $P(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT,OCDT),U,1,2)=RECORD_U_FILE
  1. .. S $P(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT,OCDT),U,6)=VISIT
  1. . S LBN=0
  1. . F S LBN=$O(^BQI(90507.6,CIEN,1,TYP,1,DXC,2,LBN)) Q:'LBN D
  1. .. S LOCDT=$P(^BQI(90507.6,CIEN,1,TYP,1,DXC,2,LBN,0),U,2)
  1. .. I (LOCDT\1)'>ADATE Q
  1. .. S PAT=$P(^BQI(90507.6,CIEN,1,TYP,1,DXC,2,LBN,0),U,4),RECORD=$P(^(0),U,3),FILE=$P(^(0),U,5),VISIT=$P(^(0),U,6)
  1. .. S PATNAM=$P($G(^DPT(PAT,0)),U,1) S:PATNAM="" PATNAM="~"
  1. .. I $D(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT)) D
  1. ... S $P(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT,OCDT),U,3,5)=RECORD_U_FILE_U_LOCDT
  1. ... S $P(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT,OCDT),U,6)=VISIT
  1. .. I '$D(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT)) D
  1. ... S $P(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT,"~"),U,3,5)=RECORD_U_FILE_U_LOCDT
  1. ... S $P(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT,"~"),U,6)=VISIT
  1. ;
  1. Q
  1. ;
  1. SOR ; Sort out the alerts
  1. NEW COMM,TYPE,LINK,DCAT,NUM,OCDT,PATNAM,DOCDT,LOCDT,TCAT,OCDT,FILE
  1. NEW LBREC,LBFIL,PAT,LBN
  1. S PATNAM=""
  1. F S PATNAM=$O(@TEMP@(PATNAM)) Q:PATNAM="" D
  1. . S PAT=""
  1. . F S PAT=$O(@TEMP@(PATNAM,PAT)) Q:PAT="" D
  1. .. S COMM=""
  1. .. F S COMM=$O(@TEMP@(PATNAM,PAT,COMM)) Q:COMM="" D
  1. ... S TYPE=""
  1. ... F S TYPE=$O(@TEMP@(PATNAM,PAT,COMM,TYPE)) Q:TYPE="" D
  1. .... NEW DA,IENS,BQIH,BQI
  1. .... S BQIH=$$SPM^BQIGPUTL()
  1. .... S BQI=$O(^BQI(90508,BQIH,15,"B",TYPE,""))
  1. .... S DA(1)=BQIH,DA=BQI,IENS=$$IENS^DILF(.DA)
  1. .... ;S LINK=$$GET1^DIQ(90508.015,IENS,.02,"E")
  1. .... S DCAT=""
  1. .... F S DCAT=$O(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT)) Q:DCAT="" D
  1. ..... S OCDT=""
  1. ..... F S OCDT=$O(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT,OCDT)) Q:OCDT="" D
  1. ...... S RECORD=$P(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT,OCDT),U,1)
  1. ...... S FILE=$P(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT,OCDT),U,2)
  1. ...... S LBREC=$P(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT,OCDT),U,3)
  1. ...... S LBFIL=$P(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT,OCDT),U,4)
  1. ...... S LOCDT=$P(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT,OCDT),U,5)
  1. ...... S VISIT=$P(@TEMP@(PATNAM,PAT,COMM,TYPE,DCAT,OCDT),U,6)
  1. ...... S LOCDT=$S(+$P(^BQI(90508,1,0),U,25)=0:"",1:LOCDT)
  1. ...... S DOCDT=$S(OCDT="~":"",1:OCDT)
  1. ...... D STAND(PAT)
  1. ...... S TCAT=$S(DCAT="Ideation":"Ideation with Plan and Intent",DCAT="Completion":"Completed Suicide",1:DCAT)
  1. ...... S HDR=$P(HEADR,"^",1,9)_"^T00045ALERT_TYPE^T00045DX_CAT^D00015VISITDATE^I00010VISIT_IEN^I00010DFN^D00015LABDATE"_$C(30)
  1. ...... S II=II+1,@DATA@(II)=$P(VALUE,"^",1,9)_U_TYPE_U_TCAT_U_$$FMTE^BQIUL1(DOCDT)_U_VISIT_U_PAT_U_$$FMTE^BQIUL1(LOCDT)_$C(30)
  1. ;
  1. DONE ;
  1. I $G(HDR)="" D
  1. . S HDR="T00030PN^T00030HRN^T00001SX^T00010AGE^D00030DOB^T00035DPCP^T00030COM^T00120DCAT^"
  1. . S HDR=HDR_"T00045ALERT_TYPE^T00045DX_CAT^D00015VISITDATE^I00010VISIT_IEN^I00010DFN^D00015LABDATE"_$C(30)
  1. S @DATA@(0)=HDR
  1. S II=II+1,@DATA@(II)=$C(31)
  1. K @TEMP
  1. Q
  1. ;
  1. ERR ;
  1. D ^%ZTER
  1. NEW Y,ERRDTM
  1. S Y=$$NOW^XLFDT() X ^DD("DD") S ERRDTM=Y
  1. S BMXSEC="Recording that an error occurred at "_ERRDTM
  1. I $D(II),$D(DATA) S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. STAND(DFN) ;EP - Get standard display
  1. NEW IEN,STVW,KEY,ORD
  1. S HEADR="",VALUE=""
  1. ; Check for alternate display order first
  1. S ORD=""
  1. F S ORD=$O(^BQI(90506.1,"AF","D",ORD)) Q:ORD="" D
  1. . S IEN=""
  1. . F S IEN=$O(^BQI(90506.1,"AF","D",ORD,IEN)) Q:IEN="" D
  1. .. S STVW=IEN
  1. .. ; if the field has been inactivated, don't get data
  1. .. I $$GET1^DIQ(90506.1,STVW_",",.1,"I")=1 Q
  1. .. S KEY=$$GET1^DIQ(90506.1,STVW_",",3.1,"E")
  1. .. I KEY'="",'$$KEYCHK^BQIULSC(KEY,DUZ) Q
  1. .. ; For a standard display, display the 'R'equired and 'D'efault fields
  1. .. I $$GET1^DIQ(90506.1,STVW_",",3.04,"I")'="O" D
  1. ... D GVAL
  1. ... Q:HDR=""
  1. ... S VALUE=VALUE_VAL_"^"
  1. ... S HEADR=HEADR_HDR_"^"
  1. ;
  1. ; Check for normal display order
  1. S ORD=""
  1. F S ORD=$O(^BQI(90506.1,"AD","D",ORD)) Q:ORD="" D
  1. . S IEN=""
  1. . F S IEN=$O(^BQI(90506.1,"AD","D",ORD,IEN)) Q:IEN="" D
  1. .. S STVW=IEN
  1. .. ; if the field has been inactivated, don't get data
  1. .. I $$GET1^DIQ(90506.1,STVW_",",.1,"I")=1 Q
  1. .. S KEY=$$GET1^DIQ(90506.1,STVW_",",3.1,"E")
  1. .. I KEY'="",'$$KEYCHK^BQIULSC(KEY,DUZ) Q
  1. .. ; For a standard display, display the 'R'equired and 'D'efault fields
  1. .. I $$GET1^DIQ(90506.1,STVW_",",3.04,"I")'="O" D
  1. ... D GVAL
  1. ... Q:HDR=""
  1. ... S VALUE=VALUE_VAL_"^"
  1. ... S HEADR=HEADR_HDR_"^"
  1. ;
  1. S HEADR=$$TKO^BQIUL1(HEADR,"^")
  1. S VALUE=$$TKO^BQIUL1(VALUE,"^")
  1. Q
  1. ;
  1. GVAL ; Get values
  1. ;Parameters
  1. ; FIL = FileMan file number
  1. ; FLD = FileMan field number
  1. ; EXEC = If an executable is needed to determine value
  1. ; HDR = Header value
  1. ;the executable expects the value to be returned in variable VAL
  1. NEW FIL,FLD,EXEC
  1. S FIL=$$GET1^DIQ(90506.1,STVW_",",.05,"E")
  1. S FLD=$$GET1^DIQ(90506.1,STVW_",",.06,"E")
  1. S EXEC=$$GET1^DIQ(90506.1,STVW_",",1,"E")
  1. S HDR=$$GET1^DIQ(90506.1,STVW_",",.08,"E")
  1. I $G(DFN)="" S VAL="" Q
  1. ;
  1. I $G(EXEC)'="" D Q
  1. . I EXEC["PLIEN" S VAL="",HDR="" Q
  1. . X EXEC
  1. ;
  1. I FIL'="",FLD'="" S VAL=$$GET1^DIQ(FIL,DFN_",",FLD,"E")
  1. Q