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

SCMCMHE.m

Go to the documentation of this file.
  1. SCMCMHE ;BP/DMR - PCMM Mental Health Report; 8 FEB 12
  1. ;;5.3;Scheduling;**589**;AUG 13, 1993;Build 41
  1. ;
  1. ;Report to identify MH patients to load into PCMM. The report
  1. ;uses the Outpatient Encounter file and CPT codes to identify the
  1. ;MH patients.
  1. ;
  1. ;Input - Beginning & Ending Date
  1. ; Institution (1 or all (all being 3 digit parent station)
  1. ; Number of Mental Health Stop Codes to search for in the given timeframe
  1. ;
  1. ;Output - Pat.Name^SSN(Last4)^days since last encounter^Future Appointment date/location
  1. ; ^Encounter Date^Clinic Name^ Location of Encounter
  1. INIT ;
  1. K ^TMP("MHEN",$J)
  1. K ^TMP("MHEN1",$J)
  1. ;
  1. DATE ;
  1. S (BEG,END,DATE)=""
  1. ;
  1. W !!,"This report should be run during non peak hours and can take hours to run!",!!
  1. ;
  1. S %DT="AE",%DT("A")="Enter BEGINNING Date: " D ^%DT G EXIT:Y<0 S BEG=Y
  1. S %DT="AE",%DT("A")="Enter ENDING Date: " D ^%DT G EXIT:Y<0 S END=Y
  1. I BEG>END W !,"Beginning date must be before end date!" G DATE
  1. ;
  1. INST ;
  1. S (INST,DEF,IN)=""
  1. S DIC=4,DIC(0)="AQMEZ",DIC("A")="Select Institution: " D ^DIC
  1. I Y=-1 G EXIT
  1. S IN=$P(Y,"^") S INST=$$GET1^DIQ(4,IN,99) I $L(INST)=3 S INST="ALL"
  1. I $L(INST)>3 S INST=$P(Y,"^",2)
  1. EN ;
  1. S DEF=3
  1. R !!,"Enter number of Outpatient Encounters (1 to 10): 3// ",DEF:30
  1. S:DEF="" DEF=3 I DEF="^" G EXIT
  1. I DEF>10!(DEF<1) W !,"Enter Number from 1 to 10 or '^' to Exit!" G EN
  1. ;
  1. S %ZIS="Q" D ^%ZIS G:POP EXIT
  1. I $D(IO("Q")) S ZTRTN="PRT^SCMCMHE",ZTSAVE("*")="" D ^%ZTLOAD K ZTRTN,ZTSAVE G EXIT
  1. I '$D(IO("Q")) U IO
  1. ;
  1. PRT ;
  1. D LOOP
  1. D SAVE
  1. ;
  1. W "Patient^SSN(Last4)^Days Since Last Encounter^Future Appointment Date^Location^Encounter Date^Clinic Name^Location of Encounter"
  1. ;
  1. S (DTE,DTE2,IEN,DFN,CC)=""
  1. S DTE="" F S DTE=$O(^TMP("MHEN",$J,DTE)) Q:DTE="" D
  1. .S DFN="" F S DFN=$O(^TMP("MHEN",$J,DTE,DFN)) Q:DFN="" D
  1. ..W !,^TMP("MHEN",$J,DTE,DFN)
  1. ..S DTE2="" F S DTE2=$O(^TMP("MHEN1",$J,DFN,DTE2)) Q:DTE2="" D
  1. ...S CC="" F S CC=$O(^TMP("MHEN1",$J,DFN,DTE2,CC)) Q:CC="" D
  1. ....W ^TMP("MHEN1",$J,DFN,DTE2,CC)
  1. ....Q
  1. D ^%ZISC
  1. G EXIT
  1. Q
  1. ;
  1. LOOP ;
  1. S (EN,ENC,ESC,ECL,JJ,CSC,CLIN,SC,SCIEN,EIEN,IEN,DFN,MHSC,MHTC,FAC,HOLD,HDT,HDT2,CODE,SCODE,SSTOP)=""
  1. S CC=0,END=END+.999999
  1. S DFN="" F S DFN=$O(^SCE("C",DFN)) Q:DFN="" D
  1. .Q:$$GET1^DIQ(2,DFN,.351)'=""
  1. .S MHTC="" S MHTC=$$START^SCMCMHTC(DFN) Q:MHTC'=""
  1. .I CC'=DEF&(DFN'=HOLD) D FORMAT
  1. .S CC=0,EIEN="" F S EIEN=$O(^SCE("C",DFN,EIEN)) Q:EIEN=""!(CC=DEF) D
  1. ..S DATE="",DATE=$$GET1^DIQ(409.68,EIEN,.01,"I") Q:DATE=""
  1. ..Q:DATE<BEG!(DATE>END)
  1. ..Q:$E(HDT2,1,7)=$E(DATE,1,7)&(DFN=HOLD)
  1. ..Q:$$GET1^DIQ(409.68,EIEN,.12,"I")'=2
  1. ..S FAC="" S FAC=$$GET1^DIQ(409.68,EIEN,.11)
  1. ..Q:INST'="ALL"&(FAC'=INST)
  1. ..S SCIEN="",SCIEN=$$GET1^DIQ(409.68,EIEN,.03,"I") Q:SCIEN=""
  1. ..S MHSC="" F S MHSC=$O(^SCTM(404.61,"B",SCIEN,MHSC)) Q:MHSC="" D
  1. ...Q:$D(^SCTM(404.61,"AC","1",MHSC))
  1. ...S (ECL,SSTOP)="" S ECL=$$GET1^DIQ(409.68,EIEN,.04,"I")
  1. ...I ECL'="" S CSC="" S CSC=$$GET1^DIQ(44,ECL,2503,"I")
  1. ...I CSC'="" S SSC="" F S SSC=$O(^SCTM(404.61,"B",CSC,SSC)) Q:SSC=""!(SSTOP=1) D
  1. ....I $D(^SCTM(404.61,"AC","1",SSC)) S SSTOP=1
  1. ...Q:SSTOP=1
  1. ...S CLIN="" S CLIN=$$GET1^DIQ(409.68,EIEN,.04)
  1. ...S CC=CC+1
  1. ...I CC=1 S (HDT,HDT2)="" S HDT=DATE D
  1. ....S ^TMP("MHEN",$J,DATE,DFN)=""
  1. ....S ^TMP("MHEN1",$J,DFN,DATE,CC)="^"_CLIN_"^"_FAC_"^"
  1. ...I CC>1 S ^TMP("MHEN1",$J,DFN,DATE,CC)="^"_CLIN_"^"_FAC_"^"
  1. ...S HOLD=DFN,HDT2=DATE
  1. ...Q
  1. Q
  1. FORMAT ;
  1. Q:HOLD=""!(CC=0)
  1. Q:HDT=""
  1. K ^TMP("MHEN",$J,HDT,HOLD)
  1. K ^TMP("MHEN1",$J,HOLD)
  1. Q
  1. SAVE ;
  1. S (DFN,IEN,EN,LEN,PN,SSN,DTE,DTE2,EDT,LTE,CC,DAYS)=""
  1. S DTE="" F S DTE=$O(^TMP("MHEN",$J,DTE)) Q:DTE="" D
  1. .S DFN="" F S DFN=$O(^TMP("MHEN",$J,DTE,DFN)) Q:DFN="" D
  1. ..S PN="" S PN=$$GET1^DIQ(2,DFN,.01)
  1. ..S SSN="" S SSN=$$GET1^DIQ(2,DFN,.09,"I") I SSN'="" S SSN=$E(SSN,6,9)
  1. ..S Y=DTE X ^DD("DD") S EDT=Y
  1. ..S $P(^TMP("MHEN",$J,DTE,DFN),"^",6)=""
  1. ..S $P(^TMP("MHEN",$J,DTE,DFN),"^",1)=PN
  1. ..S $P(^TMP("MHEN",$J,DTE,DFN),"^",2)=SSN
  1. ..S DTE2="" F S DTE2=$O(^TMP("MHEN1",$J,DFN,DTE2)) Q:DTE2="" D
  1. ...S CC="" F S CC=$O(^TMP("MHEN1",$J,DFN,DTE2,CC)) Q:CC="" D
  1. ....S Y=DTE2 X ^DD("DD") S EDT=Y
  1. ....S $P(^TMP("MHEN1",$J,DFN,DTE2,CC),"^",1)=EDT
  1. ....I CC=DEF S X1=DT,X2=DTE D ^%DTC S DAYS=X
  1. ....S $P(^TMP("MHEN",$J,DTE,DFN),"^",3)=DAYS
  1. ....D FUT
  1. ....Q
  1. Q
  1. FUT ;
  1. S (SC,ST,ADT,DTT,CL)="" S DTT=DT
  1. F S DTT=$O(^DPT(DFN,"S",DTT)) Q:DTT=""!(ADT'="") D
  1. .I DTT>DT S ST="" S ST=$$GET1^DIQ(2.98,DTT_","_DFN_",",3)
  1. .Q:ST'="" S ADT="" S Y=DTT X ^DD("DD") S ADT=Y
  1. .S CL="" S CL=$$GET1^DIQ(2.98,DTT_","_DFN_",",.01)
  1. .S $P(^TMP("MHEN",$J,DTE,DFN),"^",4)=ADT
  1. .S $P(^TMP("MHEN",$J,DTE,DFN),"^",5)=CL
  1. .Q
  1. Q
  1. EXIT ;
  1. K BEG,CC,CH,CL,END,DATE,SC,SCIEN,INST,DEF,IN,EN,ENC,JJ,PAT,DEF,DTE,DTE2,LEN
  1. K APP,ADT,CLIN,SC,EIEN,IEN,DFN,MHSC,MHTC,FAC,ST,DTT,DATE,DAYS,EDT,HDT,SSTOP
  1. K PN,SSN,X,X1,POP,LTE,HOLD,X2,Y,HDT2,DIC,ENC,ECL,CSC,CODE,SCODE,ESC,SSC
  1. K ^TMP("MHEN",$J)
  1. K ^TMP("MHEN1",$J)
  1. Q