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

BTPWHIST.m

Go to the documentation of this file.
  1. BTPWHIST ;VNGT/HS/BEE-CMET History ; 04 Feb 2009 2:55 PM
  1. ;;1.1;CARE MANAGEMENT EVENT TRACKING;**2**;Apr 01, 2015;Build 17
  1. Q
  1. ;
  1. AUD(DATA,CMIEN) ;EP - BTPW EVENT AUDIT HISTORY
  1. ;
  1. ;This RPC returns any field changes recorded for a particular event
  1. ;
  1. ;Input: CMIEN - Event IEN
  1. ;
  1. NEW UID,II,MDTTM,FLD,I
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BTPWHIST",UID))
  1. K @DATA
  1. I $G(DT)=""!($G(U)="") D DT^DICRW
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BTPWHIST D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. S @DATA@(II)="D00030BTPWLMDT^T00030BTPWLMBY^T00030BTPWCFLD^I00010BTPWENTR^T04096BTPWNVAL^T04096BTPWPVAL"_$C(30)
  1. ;
  1. ;Verify Event IEN was passed
  1. I CMIEN="" G DONE
  1. ;
  1. ;Load FLD array
  1. F I=1:1 S FLD=$P($T(FLDS+I),";;",2,99) Q:FLD="" S FLD($P(FLD,";"),$P(FLD,";",2))=$P(FLD,";",3,99)
  1. ;
  1. ;
  1. S MDTTM="" F S MDTTM=$O(^BTPWP(CMIEN,5,"B",MDTTM),-1) Q:MDTTM="" D
  1. . ;
  1. . N MODDT,MIEN
  1. . S MODDT=$$FMTE^BQIUL1(MDTTM)
  1. . ;
  1. . S MIEN="" F S MIEN=$O(^BTPWP(CMIEN,5,"B",MDTTM,MIEN),-1) Q:MIEN="" D
  1. .. ;
  1. .. N USER,FILFLD,FILE,FIELD,FNAME,FTYPE,PFILE,VTYPE,CUR,PRV,ENTRY,EXEC
  1. .. ;
  1. .. S USER=$$GET1^DIQ(90620.05,MIEN_","_CMIEN_",",".02","I")
  1. .. I USER>0 S USER=$$GET1^DIQ(90620.05,MIEN_","_CMIEN_",",".02","E")
  1. .. S FILFLD=$$GET1^DIQ(90620.05,MIEN_","_CMIEN_",",".03","E")
  1. .. S FILE=$P(FILFLD,":")
  1. .. S FIELD=$P(FILFLD,":",2)
  1. .. S ENTRY="" I FILE["." S ENTRY=$P($P(FILFLD,":",3),",")
  1. .. S FLD=$G(FLD(FILE,FIELD)) Q:FLD=""
  1. .. S FNAME=$P(FLD,";") S:FNAME="" FNAME=FILE_":"_FIELD
  1. .. S FTYPE=$P(FLD,";",2)
  1. .. S PFILE=$P(FLD,";",3)
  1. .. S EXEC=$P(FLD,";",4)
  1. .. S VTYPE=$$GET1^DIQ(90620.05,MIEN_","_CMIEN_",",".04","I")
  1. .. S (CUR,PRV)=""
  1. .. ;
  1. .. ;Get regular field current/previous values
  1. .. I VTYPE="R" D
  1. ... ;
  1. ... N X
  1. ... ;
  1. ... ;Current Value
  1. ... S CUR=$$GET1^DIQ(90620.05,MIEN_","_CMIEN_",",102,"E")
  1. ... I CUR]"",FTYPE="S" S CUR=$$STC^BQIUL2(FILE,FIELD,CUR)
  1. ... I CUR]"",FTYPE="D" S CUR=$$FMTE^BQIUL1(CUR)
  1. ... I CUR]"",FTYPE="P" S CUR=$$GET1^DIQ(PFILE,CUR_",",".01","E")
  1. ... I CUR]"",FTYPE="X" S X=CUR X EXEC S CUR=X
  1. ... ;
  1. ... ;Previous Value
  1. ... S PRV=$$GET1^DIQ(90620.05,MIEN_","_CMIEN_",",101,"E")
  1. ... I PRV]"",FTYPE="S" S PRV=$$STC^BQIUL2(FILE,FIELD,PRV)
  1. ... I PRV]"",FTYPE="D" S PRV=$$FMTE^BQIUL1(PRV)
  1. ... I PRV]"",FTYPE="P" S PRV=$$GET1^DIQ(PFILE,PRV_",",".01","E")
  1. ... I PRV]"",FTYPE="X" S X=PRV X EXEC S PRV=X
  1. .. ;
  1. .. ;Get word processing current/previous values
  1. .. I VTYPE="W" D
  1. ... ;
  1. ... ;Current Value
  1. ... N CVAR,WP,SIEN
  1. ... S CVAR=$$GET1^DIQ(90620.05,MIEN_","_CMIEN_",",4,"","WP")
  1. ... S SIEN=0 F S SIEN=$O(WP(SIEN)) Q:'SIEN D
  1. .... S CUR=CUR_$S(CUR]"":" ",1:"")_WP(SIEN)
  1. ... K CVAR,WP,SIEN
  1. ... ;
  1. ... ;Previous Value
  1. ... N CVAR,WP,SIEN
  1. ... S CVAR=$$GET1^DIQ(90620.05,MIEN_","_CMIEN_",",3,"","WP")
  1. ... S SIEN=0 F S SIEN=$O(WP(SIEN)) Q:'SIEN D
  1. .... S PRV=PRV_$S(PRV]"":" ",1:"")_WP(SIEN)
  1. ... K CVAR,WP,SIEN
  1. .. ;
  1. .. S II=II+1,@DATA@(II)=MODDT_U_USER_U_FNAME_U_ENTRY_U_CUR_U_PRV_$C(30)
  1. ;
  1. DONE ;
  1. S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. RLOG(VAR,USER,DTTM,DESC) ;EP -- Log Change to Tracked File - Regular fields
  1. ;
  1. N FIELD,FILE,IEN,ERROR
  1. ;
  1. ;Process each entry
  1. S FILE="" F S FILE=$O(VAR(FILE)) Q:FILE="" S IEN="" F S IEN=$O(VAR(FILE,IEN)) Q:IEN="" S FIELD="" F S FIELD=$O(VAR(FILE,IEN,FIELD)) Q:FIELD="" D
  1. . ;
  1. . N BHIST,CV,DA,DIC,DLAYGO,FILFLD,NV,X,Y,CMIEN
  1. . I FILE=90629 S CMIEN=$G(VAR(FILE,IEN,.14)) S:CMIEN'["," CMIEN=CMIEN_","
  1. . E S CMIEN=IEN
  1. . ;
  1. . ;Get New Value
  1. . S NV=VAR(FILE,IEN,FIELD)
  1. . ;
  1. . ;Pull current value
  1. . S CV=$$GET1^DIQ(FILE,IEN,FIELD,"I")
  1. . ;
  1. . ;File/Field
  1. . S FILFLD=FILE_":"_FIELD
  1. . ;
  1. . ;Quit if no difference in value
  1. . I NV=CV!((NV="@")&(CV="")) Q
  1. . ;
  1. . ;Pull Event IEN
  1. . S DA(1)=$P(CMIEN,",",$L(CMIEN,",")-1)
  1. . ;
  1. . ;Define new entry
  1. . S DIC="^BTPWP("_DA(1)_",5,"
  1. . S DIC(0)="L"
  1. . S X=DTTM S:X="" X=$$NOW^XLFDT()
  1. . S DLAYGO=90620.05,DIC(0)="L",DIC("P")=DLAYGO
  1. . I '$D(^BTPWP(DA(1),5,0)) S ^BTPWP(DA(1),5,0)="^90620.05DA^^"
  1. . K DO,DD D FILE^DICN
  1. . S DA=+Y
  1. . ;
  1. . ;Set up data
  1. . S BHIST(90620.05,DA_","_DA(1)_",",".02")=USER
  1. . S BHIST(90620.05,DA_","_DA(1)_",",".03")=FILFLD_":"_IEN
  1. . S BHIST(90620.05,DA_","_DA(1)_",",".04")="R"
  1. . S BHIST(90620.05,DA_","_DA(1)_",",".05")=DESC
  1. . S BHIST(90620.05,DA_","_DA(1)_",","101")=CV
  1. . S BHIST(90620.05,DA_","_DA(1)_",","102")=NV
  1. . ;
  1. . ;Save History
  1. . I $D(BHIST) D FILE^DIE("","BHIST","ERROR")
  1. ;
  1. Q
  1. ;
  1. WLOG(NCOM,FILFLD,IEN,USER,DTTM,DESC) ;EP -- Log Change to Tracked File - Word Processing field
  1. ;
  1. N BHIST,CCOM,CHG,CVAR,DA,DIC,DLAYGO,FIELD,FILE,I,LST,NVAR,X,Y,ERROR
  1. ;
  1. S FILE=$P(FILFLD,":")
  1. S FIELD=$P(FILFLD,":",2)
  1. ;
  1. ;Set up comment reference variable
  1. I '$D(NCOM(1)) S NVAR="@"
  1. E S NVAR="NCOM"
  1. ;
  1. ;Process Save Comment
  1. ;
  1. ;Pull current value
  1. S CVAR=$$GET1^DIQ(FILE,IEN,FIELD,"","CCOM")
  1. ;
  1. S CHG=0,LST=""
  1. S I="" F S I=$O(CCOM(I)) Q:I="" S LST=I I CCOM(I)'=$G(NCOM(I)) S CHG=1 Q
  1. I CHG=0 I $O(NCOM(LST))]"" S CHG=1
  1. ;
  1. ;No change to comments
  1. I CHG=0 Q
  1. ;
  1. ;Pull Event IEN
  1. S DA(1)=$P(IEN,",",$L(IEN,",")-1)
  1. ;
  1. ;Define new entry
  1. S DIC="^BTPWP("_DA(1)_",5,"
  1. S DIC(0)="L"
  1. S X=DTTM S:X="" X=$$NOW^XLFDT()
  1. S DLAYGO=90620.05,DIC(0)="L",DIC("P")=DLAYGO
  1. I '$D(^BTPWP(DA(1),5,0)) S ^BTPWP(DA(1),5,0)="^90620.05DA^^"
  1. K DO,DD D FILE^DICN
  1. S DA=+Y
  1. ;
  1. ;Set up data
  1. S BHIST(90620.05,DA_","_DA(1)_",",".02")=USER
  1. S BHIST(90620.05,DA_","_DA(1)_",",".03")=FILFLD_":"_IEN
  1. S BHIST(90620.05,DA_","_DA(1)_",",".04")="W"
  1. S BHIST(90620.05,DA_","_DA(1)_",",".05")=DESC
  1. ;
  1. ;Save History
  1. I $D(BHIST) D FILE^DIE("","BHIST","ERROR") ;New Comments
  1. ;
  1. ;Save comments
  1. D WP^DIE(90620.05,DA_","_DA(1)_",",3,"",CVAR) ;Save current comments
  1. D WP^DIE(90620.05,DA_","_DA(1)_",",4,"",NVAR) ;Save new comments
  1. Q
  1. ;
  1. DLOG(FILE,IENS,USER,DTTM,DESC) ;EP -- Log Deleted Entry Values to History
  1. ;
  1. N COM,VAL,RHIST,FIELD
  1. ;
  1. ;Pull existing field information
  1. D GETS^DIQ(FILE,IENS,"**","I","VAL")
  1. ;
  1. S FIELD="" F S FIELD=$O(VAL(FILE,IENS,FIELD)) Q:FIELD="" I FIELD'=1 S RHIST(FILE,IENS,FIELD)=""
  1. ;
  1. ;Save regular field history
  1. D RLOG(.RHIST,USER,DTTM,DESC)
  1. ;
  1. ;Save comment field history
  1. S COM(1)=""
  1. D WLOG(.COM,FILE_":1",IENS,USER,DTTM,DESC)
  1. ;
  1. Q
  1. ;
  1. SLOG(RIEN,CMIEN,DTTM,USER,DESC) ;EP - Log Status Changes to History
  1. ;
  1. N CV,FILFLD,IEN,PVIEN,ERROR
  1. S (PVIEN,CV)="",FILFLD="90620:.08"
  1. S IEN=0 F S IEN=$O(^BTPWQ(RIEN,2,IEN)) Q:'IEN D
  1. . N BHIST,SDATA,NV,LDTTM,LUSER,DA,DIC,DLAYGO,X,Y
  1. . S SDATA=$G(^BTPWQ(RIEN,2,IEN,0))
  1. . S NV=$P(SDATA,U,2) ;Status value
  1. . S LDTTM=$P(SDATA,U,4) ;Status changed date/time
  1. . S LUSER=$P(SDATA,U,3) ;Status changed by
  1. . ;
  1. . ;Define new entry
  1. . S DA(1)=CMIEN
  1. . S DIC="^BTPWP("_DA(1)_",5,"
  1. . S DIC(0)="L"
  1. . S X=LDTTM S:X="" X=$$NOW^XLFDT()
  1. . S DLAYGO=90620.05,DIC(0)="L",DIC("P")=DLAYGO
  1. . I '$D(^BTPWP(DA(1),5,0)) S ^BTPWP(DA(1),5,0)="^90620.05DA^^"
  1. . K DO,DD D FILE^DICN
  1. . S DA=+Y
  1. . ;
  1. . ;Set up data
  1. . S BHIST(90620.05,DA_","_DA(1)_",",".02")=LUSER
  1. . S BHIST(90620.05,DA_","_DA(1)_",",".03")=FILFLD_":"_CMIEN
  1. . S BHIST(90620.05,DA_","_DA(1)_",",".04")="R"
  1. . S BHIST(90620.05,DA_","_DA(1)_",",".05")=DESC
  1. . S BHIST(90620.05,DA_","_DA(1)_",","101")=CV
  1. . S BHIST(90620.05,DA_","_DA(1)_",","102")=NV
  1. . ;
  1. . ;Save History
  1. . I $D(BHIST) D FILE^DIE("","BHIST","ERROR")
  1. . ;
  1. . ;Save Status Comments
  1. . D SWLOG(RIEN,CMIEN,IEN,PVIEN)
  1. . ;
  1. . ;Save New Value to Current
  1. . S CV=NV,PVIEN=IEN
  1. ;
  1. K BHIST,DA,DIC,ERROR
  1. ;
  1. ;Log current status change
  1. ;
  1. N BHIST,DA,DIC,CVAR,PVWP,NVAR,NWP,CHG,LST,I,ERROR
  1. ;Define new entry
  1. S DA(1)=CMIEN
  1. S DIC="^BTPWP("_DA(1)_",5,"
  1. S DIC(0)="L"
  1. S X=DTTM S:X="" X=$$NOW^XLFDT()
  1. S DLAYGO=90620.05,DIC(0)="L",DIC("P")=DLAYGO
  1. I '$D(^BTPWP(DA(1),5,0)) S ^BTPWP(DA(1),5,0)="^90620.05DA^^"
  1. K DO,DD D FILE^DICN
  1. S DA=+Y
  1. ;
  1. ;Set up data
  1. S BHIST(90620.05,DA_","_DA(1)_",",".02")=USER
  1. S BHIST(90620.05,DA_","_DA(1)_",",".03")=FILFLD_":"_CMIEN
  1. S BHIST(90620.05,DA_","_DA(1)_",",".04")="R"
  1. S BHIST(90620.05,DA_","_DA(1)_",",".05")="Event Tracked"
  1. S BHIST(90620.05,DA_","_DA(1)_",","101")=CV
  1. S BHIST(90620.05,DA_","_DA(1)_",","102")="T"
  1. ;
  1. ;Save History
  1. I $D(BHIST) D FILE^DIE("","BHIST","ERROR")
  1. K BHIST,ERROR
  1. ;
  1. ;Log current Event Comment Change
  1. ;
  1. N BHIST,ERROR
  1. S FILE=90620
  1. S FIELD=4
  1. ;
  1. ;Pull previous history value
  1. I PVIEN]"" S CVAR=$$GET1^DIQ(90629.02,PVIEN_","_RIEN_",",1,"","PVWP")
  1. ;
  1. ;Pull current history value
  1. S NVAR=$$GET1^DIQ(90629,RIEN_",",3,"","NWP")
  1. ;
  1. S CHG=0,LST=""
  1. S I="" F S I=$O(PVWP(I)) Q:I="" S LST=I I PVWP(I)'=$G(NWP(I)) S CHG=1 Q
  1. I CHG=0 I $O(NWP(LST))]"" S CHG=1
  1. ;
  1. ;No change to comments
  1. I CHG=0 Q
  1. ;
  1. ;Pull Event IEN
  1. S DA(1)=CMIEN
  1. ;
  1. ;Define new entry
  1. S DIC="^BTPWP("_DA(1)_",5,"
  1. S DIC(0)="L"
  1. S X=DTTM S:X="" X=$$NOW^XLFDT()
  1. S DLAYGO=90620.05,DIC(0)="L",DIC("P")=DLAYGO
  1. I '$D(^BTPWP(DA(1),5,0)) S ^BTPWP(DA(1),5,0)="^90620.05DA^^"
  1. K DO,DD D FILE^DICN
  1. S DA=+Y
  1. ;
  1. ;Set up data
  1. S BHIST(90620.05,DA_","_DA(1)_",",".02")=USER
  1. S BHIST(90620.05,DA_","_DA(1)_",",".03")="90620:4:"_CMIEN
  1. S BHIST(90620.05,DA_","_DA(1)_",",".04")="W"
  1. S BHIST(90620.05,DA_","_DA(1)_",",".05")="Event Tracked"
  1. ;
  1. ;Save History
  1. I $D(BHIST) D FILE^DIE("","BHIST","ERROR") ;New Comments
  1. ;
  1. ;Save comments
  1. D WP^DIE(90620.05,DA_","_DA(1)_",",3,"",CVAR) ;Save current comments
  1. D WP^DIE(90620.05,DA_","_DA(1)_",",4,"",NVAR) ;Save new comments
  1. Q
  1. ;
  1. SWLOG(RIEN,CMIEN,NIEN,PVIEN) ;Save Status Comment Field History
  1. ;
  1. N BHIST,CHG,CVAR,DA,DIC,DLAYGO,FIELD,FILE,I,LST,NVAR,X,Y,PVWP,NWP,SDATA,LDTTM,LUSER,ERROR
  1. ;
  1. S FILE=90620
  1. S FIELD=4
  1. ;
  1. ;Pull previous history value
  1. I PVIEN]"" S CVAR=$$GET1^DIQ(90629.02,PVIEN_","_RIEN_",",1,"","PVWP")
  1. ;
  1. ;Pull current history value
  1. I NIEN]"" S NVAR=$$GET1^DIQ(90629.02,NIEN_","_RIEN_",",1,"","NWP")
  1. ;
  1. S CHG=0,LST=""
  1. S I="" F S I=$O(PVWP(I)) Q:I="" S LST=I I PVWP(I)'=$G(NWP(I)) S CHG=1 Q
  1. I CHG=0 I $O(NWP(LST))]"" S CHG=1
  1. ;
  1. ;No change to comments
  1. I CHG=0 Q
  1. ;
  1. ;Pull Event IEN
  1. S DA(1)=CMIEN
  1. ;
  1. ;Define new entry
  1. S SDATA=$G(^BTPWQ(RIEN,2,NIEN,0))
  1. S LDTTM=$P(SDATA,U,4) ;Status changed date/time
  1. S LUSER=$P(SDATA,U,3) ;Status changed by
  1. S DIC="^BTPWP("_DA(1)_",5,"
  1. S DIC(0)="L"
  1. S X=LDTTM S:X="" X=$$NOW^XLFDT()
  1. S DLAYGO=90620.05,DIC(0)="L",DIC("P")=DLAYGO
  1. I '$D(^BTPWP(DA(1),5,0)) S ^BTPWP(DA(1),5,0)="^90620.05DA^^"
  1. K DO,DD D FILE^DICN
  1. S DA=+Y
  1. ;
  1. ;Set up data
  1. S BHIST(90620.05,DA_","_DA(1)_",",".02")=LUSER
  1. S BHIST(90620.05,DA_","_DA(1)_",",".03")="90620:4:"_CMIEN
  1. S BHIST(90620.05,DA_","_DA(1)_",",".04")="W"
  1. S BHIST(90620.05,DA_","_DA(1)_",",".05")="Status Changes"
  1. ;
  1. ;Save History
  1. I $D(BHIST) D FILE^DIE("","BHIST","ERROR") ;New Comments
  1. ;
  1. ;Save comments
  1. D WP^DIE(90620.05,DA_","_DA(1)_",",3,"",CVAR) ;Save current comments
  1. D WP^DIE(90620.05,DA_","_DA(1)_",",4,"",NVAR) ;Save new comments
  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. S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. FLDS ;;
  1. ;;90620;.07;Date/Time Identified;D;
  1. ;;90620;.08;Status;X;;S X=$S(X="P":"PENDING",X="N":"NOT TRACKED",X="E":"EXCEPTION",X="S":"SUPERSEDED",X="T":"TRACKED",1:"")
  1. ;;90620;1.01;Event State;S;
  1. ;;90620;1.02;Event Tracked Date/Time;D;
  1. ;;90620;1.03;Event Tracked By;P;200;
  1. ;;90620;1.04;Close Reason;S;
  1. ;;90620;1.05;Findings Due By;D;
  1. ;;90620;1.06;Follow-up Decision Due By;D;
  1. ;;90620;1.07;Notification Due By;D;
  1. ;;90620;1.09;Last Modified Date/Time;D;
  1. ;;90620;1.1;Last Modified By;P;200;
  1. ;;90620;1.11;Follow-up Recommended?;S;
  1. ;;90620;3;State Comment;W;
  1. ;;90620;4;Event Comment;W;
  1. ;;90620.01;.01;Findings - Date;D;
  1. ;;90620.01;.02;Findings - Result;P;90620.9;
  1. ;;90620.01;.03;Findings - Interpretation;S;
  1. ;;90620.01;.04;Findings - Entered Date/Time;D;
  1. ;;90620.01;.05;Findings - Entered By;P;200;
  1. ;;90620.01;.06;Findings - Follow-Up Needed?;S;
  1. ;;90620.01;.08;Findings - Entered In Error;S;
  1. ;;90620.01;1;Findings - Comment;W;
  1. ;;90620.012;.02;Follow-ups - Event;P;90621;
  1. ;;90620.012;.03;Follow-ups - Date Entered;D;
  1. ;;90620.012;.04;Follow-ups - Entered By;P;200
  1. ;;90620.012;.05;Follow-ups - Date Due;D;
  1. ;;90620.012;.07;Follow-ups - Entered In Error;S;
  1. ;;90620.012;1;Follow-ups - Comment;W;
  1. ;;90620.011;.01;Notifications - Date;D;
  1. ;;90620.011;.02;Notifications - Method;P;90622;
  1. ;;90620.011;.03;Notifications - Entry Date;D;
  1. ;;90620.011;.04;Notifications - Entered By;P;200;
  1. ;;90620.011;.05;Notifications - Document;P;8925;
  1. ;;90620.011;.06;Notifications - TIU Document;P;8927.1;
  1. ;;90620.011;.07;Notifications - TIU Template;P;8927;
  1. ;;90620.011;.09;Notifications - Entered In Error;S;
  1. ;;90620.011;.1;Notifications - Addendum;P;8925;
  1. ;;90620.011;1;Notifications - Comment;W;
  1. ;;