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

BTPWRMDR.m

Go to the documentation of this file.
  1. BTPWRMDR ;VNGT/HS/ALA-CMET Reminders ; 13 Nov 2009 1:49 PM
  1. ;;1.0;CARE MANAGEMENT EVENT TRACKING;**2**;Feb 07, 2011;Build 52
  1. ;
  1. ;
  1. PAT(DATA,DFN) ; EP -- BTPW GET CMET REMINDERS BY PAT
  1. ; Input
  1. ; DFN - Patient internal entry number
  1. ;
  1. NEW UID,II,ERROR,BQIDFN,EVT,EVDT,CMIEN,EVNAM,LAST,CODE,EVDATE,LSTN,LSUPD,QFL,VISIT
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BTPWRMDR",UID))
  1. K @DATA
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BTPWRMDR D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. D HDR
  1. S BQIDFN=$G(DFN,"")
  1. I BQIDFN="" S BMXSEC="No patient selected" Q
  1. ;
  1. S EVT=""
  1. F S EVT=$O(^BTPWP("AG",BQIDFN,EVT)) Q:EVT="" D
  1. . S EVDT="",QFL=0
  1. . F S EVDT=$O(^BTPWP("AG",BQIDFN,EVT,EVDT),-1) Q:EVDT="" D Q:QFL
  1. .. S CMIEN=""
  1. .. F S CMIEN=$O(^BTPWP("AG",BQIDFN,EVT,EVDT,CMIEN)) Q:CMIEN="" D Q:QFL
  1. ... S EVNAM=$P(^BTPW(90621,EVT,0),U,1),LAST="",VISIT=""
  1. ... S LSUPD=$P($G(^BTPWP(CMIEN,1)),U,2)\1
  1. ... S LSTN=$P(^BTPWP(CMIEN,0),U,11) I LSTN'="" D
  1. .... I $P(^BTPWP(LSTN,0),U,1)=EVT S LAST=$P($G(^BTPWP(LSTN,0)),U,3),VISIT=$P(^(0),U,4) Q
  1. ... I LAST="" D
  1. .... S LAST=$O(^XTMP("BTPWPRC",BQIDFN,EVT,""),-1) I LAST="" Q
  1. .... S PRI=""
  1. .... F S PRI=$O(^XTMP("BTPWPRC",BQIDFN,EVT,LAST,PRI)) Q:PRI="" D
  1. ..... S VIS=""
  1. ..... F S VIS=$O(^XTMP("BTPWPRC",BQIDFN,EVT,LAST,PRI,VIS)) Q:VIS="" I VIS'="~" S VISIT=VIS Q
  1. ... S CODE="CMET_"_EVT,EVDATE=EVDT\1,QFL=1
  1. ... S II=II+1,@DATA@(II)="CMET^"_$$CAT^BTPWPDSP(EVT)_U_CODE_U_EVNAM_U_$$FMTE^BQIUL1(LAST)_U
  1. ... S @DATA@(II)=@DATA@(II)_$$FMTE^BQIUL1(EVDATE)_U_$$FMTE^BQIUL1(EVDATE)_U_$$FMTE^BQIUL1(LSUPD)_U_VISIT_U_$C(30)
  1. ;
  1. S II=II+1,@DATA@(II)=$C(31)
  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)="-1"_$C(30)
  1. I $D(II),$D(DATA) S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. HDR ; Header
  1. S @DATA@(II)="T00030CATEGORY^T00030CLIN_GROUP^T00015REM_CODE^T00050REM_DESC^D00010REM_LAST^"
  1. S @DATA@(II)=@DATA@(II)_"T00040REM_NEXT^D00010REM_DUE^D00030LAST_UPDATED^I00010VISIT_IEN^I00003DISPLAY_ORDER"_$C(30)
  1. Q
  1. ;
  1. REC(BQIDFN,DATA) ; PEP - Get future CMET records for a patient
  1. ; Input
  1. ; BQIDFN - Patient IEN
  1. ; DATA - Target
  1. ; Output
  1. ; Identifier^Category^Event Name^Next Event Due
  1. ;
  1. NEW EVT,EVDT,QFL,CMIEN,EVNAM,LAST,EVDUE,II
  1. K @DATA
  1. S EVT="",II=0
  1. F S EVT=$O(^BTPWP("AG",BQIDFN,EVT)) Q:EVT="" D
  1. . S EVDT="",QFL=0
  1. . F S EVDT=$O(^BTPWP("AG",BQIDFN,EVT,EVDT),-1) Q:EVDT="" D Q:QFL
  1. .. S CMIEN=""
  1. .. F S CMIEN=$O(^BTPWP("AG",BQIDFN,EVT,EVDT,CMIEN)) Q:CMIEN="" D Q:QFL
  1. ... S EVNAM=$P(^BTPW(90621,EVT,0),U,1),LAST=$$FMTE^BQIUL1($P($G(^BTPW(90621,EVT,1)),U,2)),QFL=1
  1. ... S EVDUE=EVDT\1
  1. ... S II=II+1,@DATA@(II)="CMET^"_$$CAT^BTPWPDSP(EVT)_U_EVNAM_U_$$FMTE^BQIUL1(EVDUE)
  1. Q
  1. ;
  1. EVT(BQIDFN,EVNT,SYS) ; PEP
  1. ; Input
  1. ; BQIDFN - Patient IEN
  1. ; EVNT - CMET Event IEN
  1. ; SYS - '1' = EHR
  1. ; Output
  1. ; Result - -1 is an error,1 is the most recent event due, 0 is none found
  1. ; If SYS is EHR (1) then Last Event Date^Date Next Due
  1. ; If SYS is not EHR (0) then Category^Event Code^Event Name^Last Event Date^Next Event Due^next event due fileman^Last Updated Date^Event Visit IEN
  1. ;
  1. ;
  1. NEW EVDT,CMIEN,EVNAM,LAST,VISIT,LSUPD,LSTN,PRI,VIS,CODE,RESULT,EVDUE
  1. S SYS=$G(SYS,0)
  1. I EVNT'?.N S EVNT=$O(^BTPW(90621,"B",EVNT,""))
  1. I EVNT="" Q "-1"
  1. S EVDT="",LAST="",RESULT=0
  1. F S EVDT=$O(^BTPWP("AG",BQIDFN,EVNT,EVDT),-1) Q:EVDT="" D
  1. . S CMIEN=""
  1. . F S CMIEN=$O(^BTPWP("AG",BQIDFN,EVNT,EVDT,CMIEN)) Q:CMIEN="" D
  1. .. S EVNAM=$P(^BTPW(90621,EVNT,0),U,1),LAST="",VISIT=""
  1. .. S LSUPD=$P($G(^BTPWP(CMIEN,1)),U,2)\1
  1. .. S LSTN=$P(^BTPWP(CMIEN,0),U,11) I LSTN'="" D
  1. ... I $P(^BTPWP(LSTN,0),U,1)=EVNT S LAST=$P($G(^BTPWP(LSTN,0)),U,3),VISIT=$P(^(0),U,4) Q
  1. .. I LAST="" D
  1. ... S LAST=$O(^XTMP("BTPWPRC",BQIDFN,EVNT,""),-1) I LAST="" Q
  1. ... S PRI=""
  1. ... F S PRI=$O(^XTMP("BTPWPRC",BQIDFN,EVNT,LAST,PRI)) Q:PRI="" D
  1. .... S VIS=""
  1. .... F S VIS=$O(^XTMP("BTPWPRC",BQIDFN,EVNT,LAST,PRI,VIS)) Q:VIS="" I VIS'="~" S VISIT=VIS Q
  1. .. S EVDUE=EVDT\1
  1. ;
  1. S CODE="CMET_"_EVNT
  1. I 'SYS D
  1. . I $G(EVNAM)="" S RESULT=0 Q
  1. . S RESULT="1^"_$$CAT^BTPWPDSP(EVNT)_U_CODE_U_EVNAM_U_$$FMTE^BQIUL1(LAST)_U
  1. . S RESULT=RESULT_$$FMTE^BQIUL1(EVDUE)_U_EVDUE_U_$$FMTE^BQIUL1(LSUPD)_U_VISIT_U
  1. I SYS D
  1. . I $G(EVNAM)="" S RESULT=0 Q
  1. . S RESULT=1_U_$$FMTE^BQIUL1(LAST)_U_$$FMTE^BQIUL1(EVDUE)
  1. Q RESULT