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

ECREDIT.m

Go to the documentation of this file.
  1. ECREDIT ;ALB/CMD - Event Capture Edit Log Report ;Nov 16, 2022@13:37:55
  1. ;;2.0;EVENT CAPTURE;**159**;8 May 96;Build 61
  1. ;
  1. ; Reference to ^TMP supported by SACC 2.3.2.5.1
  1. ; Reference to ^%DTC in ICR #10000
  1. ; Reference to ^XLFDT in ICR #10103
  1. ; Reference to GETS^DIQ in ICR #2056
  1. ;
  1. EN ;Main entry point for report
  1. N %H,ECRDT
  1. S %H=$H D YX^%DTC S ECRDT=Y
  1. K ^TMP($J,"ECREDIT"),^TMP($J,"ECRPT")
  1. D GETREC(ECSORT)
  1. D PRINT K ^TMP($J,"ECREDIT")
  1. I ECPTYP="E" D Q
  1. .S ^TMP($J,"ECRPT",1)="LOCATION^DSS UNIT(IEN #)^PATIENT^SSN^PROCEDURE^DATE OF PROCEDURE^PROVIDER NAME^ENTERED OR EDITED BY STAFF NAME"
  1. .K ^TMP($J,"ECREDIT")
  1. Q
  1. ;
  1. GETREC(SORT) ; Loop through "ADT" xref of EVENT CAPTURE PATIENT (#721) file and find records to put on report
  1. ; Input:
  1. ; SORT - sort type
  1. ;
  1. ; Output: none
  1. ;
  1. N ECNT ;record cnt
  1. N ECL ;location cnt
  1. N ECD ;DSS unit cnt
  1. N ECDFN ;DFN
  1. N ECLOCF ;Location IEN
  1. N ECDSSF ;DSS unit IEN
  1. N ECDT ;date index
  1. N ECREC ;"0" node
  1. N ECIEN ;IEN of file 721
  1. N NUNIT,NLOC
  1. S ECNT=0
  1. ;put locations and units into ien subscripted arrays
  1. S JJ="" F S JJ=$O(ECLOC(JJ)) Q:JJ="" D
  1. .S NLOC($P(ECLOC(JJ),"^",1))=$P(ECLOC(JJ),"^",2)
  1. S JJ="" F S JJ=$O(ECDSSU(JJ)) Q:JJ="" D
  1. .S NUNIT($P(ECDSSU(JJ),"^",1))=$P(ECDSSU(JJ),"^",2)
  1. S ECDT=ECSD-.0001,ECED=ECED+.9999
  1. F S ECDT=$O(^ECH("AC",ECDT)) Q:'ECDT Q:ECDT>ECED D
  1. . S ECIEN="" F S ECIEN=$O(^ECH("AC",ECDT,ECIEN)) Q:'ECIEN D
  1. .. S ECREC=$G(^ECH(ECIEN,0))
  1. .. S ECLOCF=$P(ECREC,U,4),ECDSSF=$P(ECREC,U,7)
  1. .. I '$D(NLOC(ECLOCF))!('$D(NUNIT(ECDSSF))) Q
  1. .. D BLDTMP(ECIEN,SORT,.ECNT)
  1. Q
  1. ;
  1. BLDTMP(ECIEN,ECSRT,ECCNT) ;add record to list
  1. ; Input:
  1. ; ECIEN - IEN in the EVENT CAPTURE PATIENT (#721) file
  1. ; ECSRT - sort type "D" or "U"
  1. ; ECCNT - record counter
  1. ;
  1. ; Output:
  1. ; ^TMP($J,"ECREDIT",location,DSS unit,sort,count)
  1. ;
  1. N ECLOCA,ECDSS,ECIENS,ECPRCDT,ECUSER,ECPAT,ECERR,ECPROCDT,ECPROC,ECPROV,ECSSN,ECREC,ECKEY
  1. I +$G(ECIEN)>0 D
  1. .S ECCNT=+$G(ECCNT)+1
  1. .S ECIENS=ECIEN_","
  1. .S ECREC=""
  1. .D GETS^DIQ(721,ECIENS,"1;2;3;6;8;10;13","IE","ECREC","ECERR")
  1. .S ECLOCA=$G(ECREC(721,ECIENS,3,"E")) ;Location
  1. .S ECDSS=+$G(ECREC(721,ECIENS,6,"I")) ;DSS unit
  1. .S ECPRCDT=+$G(ECREC(721,ECIENS,2,"I")) ;Procedure date/time
  1. .S ECPROCDT=$$FMTE^XLFDT(ECPRCDT,"5DZ") ;Procedure date
  1. .S ECUSER=ECREC(721,ECIENS,13,"E") ;Entered/edit by
  1. .S ECPAT=$E($G(ECREC(721,ECIENS,1,"E")),1,30) ;Patient name
  1. .S ECSSN=$E($$GETSSN^ECRDSSA(ECIEN),1,10) ;ssn
  1. .S ECPROC=$E($$GETPROC^ECRDSSA($G(ECREC(721,ECIENS,8,"I"))),1,5) ;Proc. Code
  1. .S ECPROV=$E($$GETPROV^ECRDSSA(ECIEN),1,30) ;Provider
  1. .S ECREC=ECPAT_U_ECSSN_U_ECPROC_U_ECPROCDT_U_ECPROV_U_ECUSER
  1. .S ECKEY=$S(ECSRT="D":ECPRCDT,1:ECUSER)
  1. .S ^TMP($J,"ECREDIT",ECLOCA,ECDSS,ECKEY,ECCNT)=ECREC
  1. .S ^TMP($J,"ECREDIT",ECLOCA)=$G(^TMP($J,"ECREDIT",ECLOCA))+1
  1. .S ^TMP($J,"ECREDIT",ECLOCA,ECDSS)=$G(^TMP($J,"ECREDIT",ECLOCA,ECDSS))+1
  1. Q
  1. ;
  1. PRINT ;loop results array and format output
  1. ;
  1. N ECCLOC ;current location
  1. N ECPLOC ;previous location
  1. N ECLOCNM ;location name
  1. N ECCDSS ;current DSS unit
  1. N ECPDSS ;previous DSS unit
  1. N ECDSSNM ;DSS unit name
  1. N ECCNT ;record count
  1. N ECDAT ;procedure date/time
  1. N ECRDT ;run date
  1. N ECFDT ;from date
  1. N ECTDT ;to date
  1. N ECKEY ;sort key
  1. N ECSRTBY ;sort type text
  1. N ECREC ;tmp record data
  1. N CNT,ECNT,PAGE
  1. S ECRDT=$$FMTE^XLFDT($$NOW^XLFDT,"5DZ")
  1. S ECFDT=$$FMTE^XLFDT($P(ECSD+.0001,"."),"5DZ")
  1. S ECTDT=$$FMTE^XLFDT($P(ECED,"."),"5DZ")
  1. S (ECCLOC,ECPLOC)="",ECNT=1
  1. S ECSRTBY=$S(ECSORT="D":"Procedure Date",1:"Staff Name")
  1. U IO
  1. I '$D(^TMP($J,"ECREDIT")) D Q
  1. .S ECCLOC=$O(ECLOC("")),ECCLOC=$P(ECLOC(ECCLOC),"^",2)
  1. .D HDR W:ECPTYP'="E" !!,?12,"No data to report for the date range selected.",!!
  1. F S ECCLOC=$O(^TMP($J,"ECREDIT",ECCLOC)) Q:ECCLOC="" D
  1. .I ECCLOC'=ECPLOC D ;location changed
  1. ..S ECPLOC=ECCLOC
  1. ..I $G(^TMP($J,"ECREDIT",ECCLOC))=0 D HDR W:ECTYPE'="E" !!," ** No records found on Location that match selection criteria **" Q
  1. ..D HDR
  1. .S (ECCDSS,ECPDSS,ECKEY,CNT)=""
  1. .F S ECCDSS=$O(^TMP($J,"ECREDIT",ECCLOC,ECCDSS)) Q:'ECCDSS D
  1. ..I ECCDSS'=ECPDSS D Q ;dss unit changed
  1. ...S ECPDSS=ECCDSS
  1. ...D DSSHDR^ECCLIPRO(ECCDSS)
  1. ...I $G(^TMP($J,"ECREDIT",ECCLOC,ECCDSS))=0 D HDR W:ECPTYPE'="E" !,"** No records found on DSS Unit that match selection criteria **" Q
  1. ...S ECKEY=""
  1. ...F S ECKEY=$O(^TMP($J,"ECREDIT",ECCLOC,ECCDSS,ECKEY)) Q:ECKEY="" D
  1. ....S CNT=0
  1. ....F S CNT=$O(^TMP($J,"ECREDIT",ECCLOC,ECCDSS,ECKEY,CNT)) Q:CNT="" D
  1. .....S ECREC=^TMP($J,"ECREDIT",ECCLOC,ECCDSS,ECKEY,CNT),ECNT=ECNT+1
  1. .....I ECPTYP="E" S ^TMP($J,"ECRPT",ECNT)=ECCLOC_U_$$GETDSSN^ECRDSSA(ECCDSS,.ECDSSU)_"(IEN #"_ECCDSS_")"_U_ECREC Q ;Exported fields
  1. .....W !,$P(ECREC,U),?32,$P(ECREC,U,2),?38,$P(ECREC,U,3),?50,$P(ECREC,U,4),?62,$P(ECREC,U,5),?98,$P(ECREC,U,6)
  1. .....I $Y>(IOSL-8) D HDR
  1. Q
  1. ;
  1. HDR ; print heading
  1. Q:ECPTYP="E"
  1. W @IOF W:$G(PAGE) !
  1. S PAGE=$G(PAGE)+1
  1. W !?30,"EVENT CAPTURE EDIT LOG REPORT",?80,"Run Date: ",ECRDT,?122,"Page:",PAGE
  1. W !!,?35,"For Location: ",ECCLOC
  1. W !,?35,"Date Range: ",ECFDT," - ",ECTDT
  1. W !,?35,"Sorted By: ",ECSRTBY,!
  1. W !!,"PATIENT",?32,"SSN",?38,"PROCEDURE",?50,"DATE OF",?62,"PROVIDER",?98,"ENTERED/EDITED"
  1. W !,?50,"PROCEDURE",?62,"NAME",?98,"BY STAFF NAME"
  1. W !,$$REPEAT^XLFSTR("-",132)
  1. Q
  1. ;