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

DGPFAAH2.m

Go to the documentation of this file.
  1. DGPFAAH2 ;SHRPE/SGM - PRF ASSIGNMENT HISTORY API'S ; 5/1/2018 17:00
  1. ;;5.3;Registration;**960**;Aug 13, 1993;Build 22
  1. ; Last Edited: SHRPE/sgm - Jul 5, 2018 11:07
  1. ;
  1. ; This routine was introduced in patch 960 to provide additional
  1. ; History related APIs. Patch DG*5.3*951 will be released subsequent
  1. ; to this 960 patch. The 951 will provide a common API entry point
  1. ; in the DGPFAAH routine.
  1. ;
  1. ; This routine will ONLY be invoked via the DGPFAAH routine!
  1. ;
  1. ; ICR# TYPE DESCRIPTION
  1. ;----- ---- ------------------------------------
  1. ; 2052 Sup $$GET1^DID
  1. ;10103 Sup $$FMTE^XLFDT
  1. ;
  1. QUIT
  1. ;------------------------ API Entry Points -------------------------
  1. ;
  1. ACTFILT(DGHIST,DGIEN,DGACT,DGFLDS,DGBY) ;
  1. ; For an assignment, return a list of History records with a specific
  1. ; action type
  1. D ACT Q:$Q +$G(@DGHIST) Q
  1. ;
  1. INACT(DGIEN) ;
  1. ; For an assignment, return the date of the last inactivation action
  1. Q $$LASTIN
  1. ;
  1. LAST(DGIEN) ;
  1. ; For an assignment, return the date of the last activation action
  1. Q $$LASTACT
  1. ;
  1. ;----------------- Private Main Processing Modules -----------------
  1. ACT ;
  1. ; Find all History records associated with an assignment and return
  1. ; only those History records of a certain ACTION types
  1. ; This may be called as an Extrinsic Function or as a DO w/params
  1. ; Use APIs in DGPFAAH if you wish all history records and data
  1. ; Use APIs in DGPFAA if you wish all assignment record data
  1. ;
  1. ; INPUT PARAMETERS:
  1. ; DGIEN - required - Pointer to PRF ASSIGNMENT (#26.13) file
  1. ; DGACT - required - ';'-delimited string of ACTION set of codes
  1. ; see ^DD(26.14,.03)
  1. ; DGFLDS - optional - return field values from 26.14
  1. ; ';'-delimited string can be field numbers or text
  1. ; subscripts as returned in DGPFAAH and DGPFAA routines
  1. ; Default - ACTION ; DATE/TIME
  1. ; DGBY - optional - return sorting order, default to I
  1. ; A:sort by action (action_code,ien)=ien^action_code^date/time
  1. ; D:sort by date (date/time,ien) =ien^action_code^date/time
  1. ; I:sort by ien (1,ien) =ien^action_code^date/time
  1. ;
  1. ; RETURN PARAMETER:
  1. ; DGHIST - named reference to return values
  1. ; default to .DGHIST
  1. ; @DGHIST = total number of records returned or -1
  1. ; @DGHIST@(sub1,sub2,sub3) = internal_FM_value ^ external_FM_value
  1. ; where sub1 = action_code_name if BY="A"
  1. ; sub1 = assignment date.time if BY="D"
  1. ; sub1 = 1 if BY="I"
  1. ; sub2 = history record ien
  1. ; sub3 = text name for history field (see F14 below)
  1. ;
  1. ; EXTRINSIC FUNCTION:
  1. ; Return the total number of history records found
  1. ;
  1. N CNT,DGHIEN,INPUT,TMP
  1. S CNT=0
  1. S RET=$G(DGHIST) S:RET="" RET="DGHIST"
  1. S TMP=$NA(^TMP("DGPFAAH2",$J)) K @TMP
  1. ; validate input parameters
  1. ; INPUT("FLDS",field#) = text_subscript
  1. ; INPUT("FLDS",text_subscript) = field#
  1. ; INPUT("ACT",set_of_code#) = set of code name
  1. ; INPUT("BY") = A / D / I
  1. I '$$INPUT S CNT=-1 G ACTOUT
  1. ; get all History records for an assignment
  1. ; if entered in error action encountered, remove all history records
  1. ; prior to the EIE record
  1. I $$GETALLDT^DGPFAAH(DGIEN,.DGHIEN) D
  1. . ; dghien(assignment_dt)=hien
  1. . N DATE
  1. . ; sort history data by assignment date.time
  1. . S DATE=-1 F S DATE=$O(DGHIEN(DATE)) Q:'DATE D
  1. . . N DGPFAH,HIEN
  1. . . S HIEN=DGHIEN(DATE)
  1. . . ; Q:'$$GETHIST^DGPFAAH(HIEN,.DGPFAH,1) ;after patch 960 released
  1. . . Q:'$$GETHIST^DGPFAAH(HIEN,.DGPFAH)
  1. . . M @TMP@(DATE,HIEN)=DGPFAH
  1. . . Q
  1. . ; D EIE
  1. . Q
  1. ;
  1. I $D(@TMP) D
  1. . N I,X,Y,ACT,DATE,HIEN,SUB
  1. . ; filter records and set up return array
  1. . S DATE=-1 F S DATE=$O(@TMP@(DATE)) Q:'DATE D
  1. . . S HIEN=0 F S HIEN=$O(@TMP@(DATE,HIEN)) Q:'HIEN D
  1. . . . ; is history record one of the actions
  1. . . . S ACT=+$G(@TMP@(DATE,HIEN,"ACTION"))
  1. . . . I '$D(INPUT("ACT",ACT)) K @TMP@(DATE,HIEN) Q
  1. . . . S CNT=CNT+1
  1. . . . S X=INPUT("BY")
  1. . . . S SUB=$S(X="A":INPUT("ACT",ACT),X="D":DATE,1:1)
  1. . . . ; set up return with field text names, not field#
  1. . . . S X=100 F S X=$O(INPUT("FLDS",X)) Q:X="" D
  1. . . . . S @RET@(SUB,HIEN,X)=@TMP@(DATE,HIEN,X)
  1. . . . . Q
  1. . . . Q
  1. . . Q
  1. . Q
  1. ;
  1. ACTOUT ;
  1. S @RET=CNT
  1. K @TMP
  1. Q:$Q CNT
  1. Q
  1. ;
  1. LASTACT ;
  1. ; For a PRF assignment return that date of the last activation action
  1. ;
  1. ; INPUT PARAMETER:
  1. ; DGIEN - required - Pointer to PRF ASSIGNMENT (#26.13) file
  1. ; EXTRINSIC FUNCTION: return null or p1^p2^p3
  1. ; p1 = internal FM date.time p2 = mm/dd/yy p3 = mm/dd/yyyy
  1. ;
  1. N DATE,DGACT,DGBY,DGFLDS,DGHIST
  1. S DGACT="1;3;4;5"
  1. S DGFLDS=".01;.02;.03"
  1. S DGBY="D"
  1. S DATE="" I $$ACTFILT(.DGHIST,DGIEN,DGACT,DGFLDS,DGBY)>0 D
  1. . ; dghist(assign_d/t,hist_ien,field_text) = int_val^ext_val
  1. . N X,Y,ACT,IEN
  1. . S Y="A" F S Y=$O(DGHIST(Y),-1) Q:Y<1 D Q:DATE
  1. . . S IEN="A" F S IEN=$O(DGHIST(Y,IEN),-1) Q:'IEN D Q:DATE
  1. . . . S ACT=+$G(DGHIST(Y,IEN,"ACTION"))
  1. . . . I ACT=1!(ACT=4) S DATE=Y
  1. . . . Q
  1. . . Q
  1. . Q
  1. S:DATE $P(DATE,U,2)=$$FMTE^XLFDT(DATE\1,"2Z")_U_$$FMTE^XLFDT(DATE\1,"5Z")
  1. Q DATE
  1. ;
  1. LASTIN ;
  1. ;For a PRF assignment return that date of the last inactivation action
  1. ;
  1. ; INPUT PARAMETER:
  1. ; DGIEN - required - Pointer to PRF ASSIGNMENT (#26.13) file
  1. ; EXTRINSIC FUNCTION: return null or p1^p2^p3
  1. ; p1 = internal FM date.time p2 = mm/dd/yy p3 = mm/dd/yyyy
  1. ;
  1. N DATE,DGACT,DGBY,DGFLDS,DGHIST
  1. S DGACT="3;5"
  1. S DGFLDS=".01;.02;.03"
  1. S DGBY="D"
  1. S DATE=""
  1. I $$ACTFILT(.DGHIST,DGIEN,DGACT,DGFLDS,DGBY)>0 D
  1. . ; dghist(assign_d/t,hist_ien,field_text) = int_val^ext_val
  1. . N X,Y,ACT,IEN
  1. . S Y="A" F S Y=$O(DGHIST(Y),-1) Q:Y<1 D Q:DATE
  1. . . S IEN="A" F S IEN=$O(DGHIST(Y,IEN),-1) Q:'IEN D Q:DATE
  1. . . . S ACT=+$G(DGHIST(Y,IEN,"ACTION"))
  1. . . . I ACT=3!(ACT=5) S DATE=Y
  1. . . . Q
  1. . . Q
  1. . Q
  1. S:DATE $P(DATE,U,2)=$$FMTE^XLFDT(DATE\1,"2Z")_U_$$FMTE^XLFDT(DATE\1,"5Z")
  1. Q DATE
  1. ;
  1. ;----------------------- PRIVATE SUBROUTINES -----------------------
  1. ;
  1. F14 ;
  1. ;;.01^ASSIGN
  1. ;;.02^ASSIGNDT
  1. ;;.03^ACTION
  1. ;;.04^ENTERBY
  1. ;;.05^APPRVBY
  1. ;;.06^TIULINK
  1. ;;.09^ORIGFAC
  1. ;;
  1. N I,X,Y
  1. F I=1:1 S X=$P($T(F14+I),";",3) Q:X="" D
  1. . S Y=$P(X,U,2),DATA(+X)=Y,DATA(Y)=+X
  1. . Q
  1. Q
  1. ;
  1. INPUT() ; validate input parameters
  1. N I,X,Y,DATA,DGERR,DIERR,TMP,TX
  1. S DGIEN=+$G(DGIEN) I '$D(^DGPF(26.13,DGIEN,0)) Q 0
  1. D F14 ; sets up DATA()
  1. ; validate DGFLDS
  1. ; INPUT("FLDS",file#,field#)=textname
  1. ; INPUT("FLDS",file#,textname)=field#
  1. S X=$G(DGFLDS) I $L(X) D
  1. . F I=1:1:$L(X,";") S Y=$P(X,";",I) D
  1. . . Q:Y="" Q:'$D(DATA(Y))
  1. . . S TX=$S(Y=+Y:DATA(Y),1:Y)
  1. . . I Y'=+Y S Y=DATA(TX)
  1. . . S INPUT("FLDS",Y)=TX,INPUT("FLDS",TX)=Y
  1. . . Q
  1. . Q
  1. ; add in default fields if necessary
  1. S X="ASSIGNDT" I '$D(INPUT("FLDS",X)) D
  1. . S INPUT("FLDS",.02)=X,INPUT("FLDS",X)=.02
  1. . Q
  1. S X="ACTION" I '$D(INPUT("FLDS",X)) D
  1. . S INPUT("FLDS",.03)=X,INPUT("FLDS",X)=.03
  1. . Q
  1. ; validate DGACT
  1. S DGACT=$G(DGACT) I DGACT="" Q 0
  1. S X=$$GET1^DID(26.14,.03,,"SET OF CODES",,"DGERR")
  1. F I=1:1:$L(X,";") S Y=$P(X,";",I) Q:Y="" S TMP(+Y)=$P(Y,":",2)
  1. F I=1:1:$L(DGACT,";") S X=$P(DGACT,";",I) D
  1. . I +X,$D(TMP(X)) S INPUT("ACT",X)=TMP(X)
  1. . Q
  1. I '$D(INPUT("ACT")) Q 0
  1. ; validate DGBY
  1. S X=$G(DGBY),X=$S(X="":"I","ADI"[$E(X):$E(X),1:"I")
  1. S INPUT("BY")=X
  1. Q 1