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

ECXDRG.m

Go to the documentation of this file.
  1. ECXDRG ;ALB/TJL - DRG Report ;4/2/24 15:12
  1. ;;3.0;DSS EXTRACTS;**190**;Dec 22, 1997;Build 36
  1. ;
  1. EN ; Entry point from menu option
  1. N I,X,Y,DIR,ECXPORT
  1. ;S ECXPORT=$$EXPORT^ECXUTL1 Q:ECXPORT=-1 I ECXPORT D Q ; The output can only be exported,
  1. S ECXPORT=1 D Q ; but code to send output to the screen is retained - tjl FY25 - 190
  1. . K ^TMP($J,"ECXPORT")
  1. . S ^TMP($J,"ECXPORT",0)="DRG^EFFECTIVE DATE^STATUS^INACTIVE DATE^DRG DESCRIPTION"
  1. . D EN1
  1. . M ^TMP($J,"ECXPORT")=^TMP("ECXDRG",$J)
  1. . D EXPDISP^ECXUTL1
  1. ;
  1. ; Queue Report
  1. W !!,"** Report requires 132 columns to print correctly **",!!
  1. N ZTDESC,ZTIO,ZTSAVE
  1. S ZTIO=""
  1. S ZTDESC="Diagnosis Related Group"
  1. F I="NAME","EFF DATE","STATUS","INACT DATE" D
  1. . S ZTSAVE(I)=""
  1. D EN^XUTMDEVQ("EN1^ECXDRG",ZTDESC,.ZTSAVE)
  1. Q
  1. EN1 ; Tasked entry point
  1. ; Declare variables
  1. N U,DA,LN,DESC,NAME,STAT,INACT,LINEDA,LINECT,NODE0,PAGENUM,NESI
  1. N DIC,DR,DIQ,CNT,STOP,QFLG,RUNDATE
  1. K ^TMP("ECXDRG",$J)
  1. S U="^",$P(LN,"-",132)=""
  1. S (CNT,QFLG,PAGENUM,STOP)=0
  1. D NOW^%DTC S Y=$E(%,1,12) S RUNDATE=$$FMTE^XLFDT(Y)
  1. I '$G(ECXPORT) D HEADER I STOP D EXIT Q
  1. D GETDATA I $G(ECXPORT) Q ;Have data, no need to print.
  1. I '$D(^TMP("ECXDRG",$J)) D Q
  1. .W !
  1. . W !,"+=========================+"
  1. . W !,"| No DRG data available |"
  1. . W !,"+=========================+"
  1. . D WAIT
  1. D DETAIL I STOP D EXIT Q
  1. K ^TMP("ECXDRG",$J)
  1. Q
  1. ;
  1. GETDATA ;
  1. S DA=0 F S DA=$O(^ICD(DA)) Q:(+DA=0) D
  1. . S CNT=CNT+1
  1. . S NAME=$P(^ICD(DA,0),U,1)
  1. . S EFFDA=$O(^ICD(DA,66,9999999),-1)
  1. . S NODE0=$G(^ICD(DA,66,EFFDA,0))
  1. . S EFFDT=$$FMTE^XLFDT($P(NODE0,U,1))
  1. . S STAT=$P(NODE0,U,3)
  1. . S INACT=$S(STAT=0:EFFDT,1:"")
  1. . S STAT=$S(STAT=0:"Inactive",1:"Active")
  1. . S NESI=NAME_U_EFFDT_U_STAT_U_INACT
  1. . S ^TMP("ECXDRG",$J,CNT)=NESI
  1. . ; Get description (which may be multiple lines)
  1. . S DESCDA=$O(^ICD(DA,68,999999),-1)
  1. . S NODE0=$G(^ICD(DA,68,DESCDA,0))
  1. . S (LINECT,LINEDA)=0 F S LINEDA=$O(^ICD(DA,68,DESCDA,1,LINEDA)) Q:'LINEDA D
  1. . . I $G(ECXPORT) S:LINEDA>1 CNT=CNT+1 S ^TMP("ECXDRG",$J,CNT)=NESI_U_^ICD(DA,68,DESCDA,1,LINEDA,0) Q
  1. . . S LINECT=LINECT+1
  1. . . S ^TMP("ECXDRG",$J,CNT,LINECT)=^ICD(DA,68,DESCDA,1,LINEDA,0)
  1. . Q
  1. Q
  1. S PAGENUM=PAGENUM+1
  1. W @IOF
  1. W !,?45,"Diagnosis Related Group (DRG) Report",?120,"Page: ",PAGENUM
  1. W !,?43,"Report Run Date/Time: "_RUNDATE
  1. W !!!,"DRG NAME",?35,"EFFECTIVE DATE",?56,"STATUS",?68,"INACTIVATION DATE",!,LN,!
  1. Q
  1. ;
  1. DETAIL ;Print detailed line
  1. ; Input : ^TMP("ECXDRG",$J) full global reference
  1. ; Output : None
  1. N RECORD,NODE,DLINE,BLANK
  1. S RECORD=0 F S RECORD=$O(^TMP("ECXDRG",$J,RECORD)) Q:'RECORD!(STOP) D
  1. . S BLANK=1 S NODE=^TMP("ECXDRG",$J,RECORD)
  1. . W !,$P(NODE,U,1),?36,$P(NODE,U,2),?56,$P(NODE,U,3),?70,$P(NODE,U,4)
  1. . W !,"DESCRIPTION:"
  1. . S DLINE=0 F S DLINE=$O(^TMP("ECXDRG",$J,RECORD,DLINE)) Q:'DLINE S BLANK=0 W ?14,^TMP("ECXDRG",$J,RECORD,DLINE),!
  1. . W:BLANK !
  1. . I $Y>(IOSL-5) D WAIT Q:STOP D HEADER
  1. Q
  1. ;
  1. WAIT ;End of page logic
  1. ;Input ; None
  1. ;Output ; STOP - Flag inidcating if printing should continue
  1. ; 1 = Stop 0 = Continue
  1. S STOP=0
  1. I $E(IOST,1,2)="C-" D Q ; CRT - Prompt for continue
  1. . F Q:$Y>(IOSL-3) W !
  1. . N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
  1. . S DIR(0)="E"
  1. . D ^DIR
  1. . S STOP=$S(Y'=1:1,1:0)
  1. S STOP=$$S^%ZTLOAD() ; Background task - check TaskMan
  1. I STOP D
  1. . W !,"**************************************************"
  1. . W !,"* Printing of DRG report stopped, as requested *"
  1. . W !,"**************************************************"
  1. Q
  1. EXIT ;Kill temp global
  1. K ^TMP("ECXDRG",$J)
  1. Q
  1. ;