EHMAPPTZ0 ;ALB/WTC - EHRM APPOINTMENT MAINTENANCE; Jun 05, 2025@14:52:49
;;1.0;ELECTRONIC HEALTH MODERNIZATION;**13**;Apr 19, 2021;Build 27
;
; Clone of EHMAPPT0 but reports show Encounter IEN.
;
Q ;
;
POSTSLCT(RPTYPE,CONVDATE,SORTORDR,CLINFLTR,CLINICS,FILTER,NONCOUNT) ;
;
; Select parameters for list or summary.
;
; RPTYPE = Report type (LIST, SUMMARY or OTHER) [REQUIRED]
; CONVDATE = Date of conversion [RETURNED]
; SORTORDR = Sort order (1,2,3) [RETURNED]
; CLINFLTR = Clinic filter (A or S^clinic IEN)
; CLINICS = Clinics to include/exclude [RETURNED]
; FILTER = Encounter filter (ALL, WITH or WITHOUT) [RETURNED]
; NONCOUNT = Include/exclude non-count clinics [RETURNED]
;
I $G(RPTYPE)="" Q ;
;
N DIR,Y,DIC,X ;
;
S (CONVDATE,CLINFLTR,FILTER)="" ;
;
; Conversion date
;
S CONVDATE=$$CONVDATE^EHM13UTIL() Q:CONVDATE="" ;
;
; Sort Order
;
I $G(SORTORDR)="" S SORTORDR=$$SORTORDR^EHM13UTIL() Q:SORTORDR="" ;
;
; Include/exclude noncount clinics
;
S NONCOUNT=$$NONCOUNT^EHM13UTIL() Q:NONCOUNT="" ;
;
; All clinics, All except some clinics, selected clinics.
;
S CLINFLTR=$$CLINICS^EHM13UTIL(.CLINICS) Q:CLINFLTR="" ;
;
; All appointments or with/without encounters only
;
S FILTER="" I RPTYPE="LIST" S FILTER=$$FILTER^EHM13UTIL() Q:FILTER="" ;
Q ;
;
POSTLIVE(RPTYPE,CONVDATE,SORTORDR,CLINFLTR,CLINICS,FILTER,NONCOUNT,QUEUED,INCLCANC,ACTREQ) ;
;
; QUEUED = 1 if report queued, 0 otherwise
; INCLCANC = 1 if cancelled appointments included, 0 otherwise
; ACTREQ = 1 if only ACTION REQUIRED encounters included, 0 otherwise
;
; See POSTSLCT for remaining parameter definitions
;
; Post go-live appointment list. Select appointments after conversion date that were made after the conversion date.
; Returns list in ^TMP($J).
;
; ^TMP($J)=SORT ORDER (1,2,3)
; ^TMP($J,sorted values,409.84)=pointer to #409.84 ^ 0 node from file #409.84
; ^TMP($J,sorted values,2)=0 node from appointment multiple in file #2
; ^TMP($J,sorted values,44)=ien of appointment multiple in file #44 ^ 0 node from appointment in file #44
;
; sorted values are made up of: appointment date/time in FileMan format (e.g., 3230701.1209)
; patient as LAST NAME,FIRST NAME ^ DFN (e.g., SMITH,JOHN A^12345)
; clinic as NAME ^ IEN in file #44. (e.g., MEDICAL CLINIC^12345)
;
N IEN,CTR,APPTDTTM,IEN2,X,DFN,DATENTRD,PTAPPT,ENCNTR,SDECIEN,SDECAPPT ;
;
K ^TMP($J) ;
I 'QUEUED U 0 W !,"Scanning ",$P(^DIC(44,0),U,1)," file.",! ;
;
;S IEN=$S($P(CLINFLTR,U,1)="A":0,1:$P(CLINFLTR,U,2)-.000001),I=0 ;
S IEN=0,CTR=0 ;
;F S IEN=$O(^SC(IEN)) Q:'IEN Q:$P(CLINFLTR,U,1)="S"&(IEN>$P(CLINFLTR,U,2)) I $$GET1^DIQ(44,IEN,2)="CLINIC",'$D(^EHRM(1610,"B",IEN)) D ;
F S IEN=$O(^SC(IEN)) Q:'IEN I $$GET1^DIQ(44,IEN,2)="CLINIC",'$D(^EHRM(1610,"B",IEN)) D ;
. ;
. I NONCOUNT="E",$$GET1^DIQ(44,IEN,2502)="YES" Q ; Exclude non-count clinic
. I CLINFLTR="X",$D(CLINICS(IEN)) Q:CLINICS(IEN)="EXCLUDE" ;
. I CLINFLTR="S" Q:'$D(CLINICS(IEN)) ;
. ;
. S APPTDTTM=CONVDATE-.000001 F S APPTDTTM=$O(^SC(IEN,"S",APPTDTTM)) Q:'APPTDTTM S IEN2=0 F S IEN2=$O(^SC(IEN,"S",APPTDTTM,1,IEN2)) Q:'IEN2 S X=$G(^(IEN2,0)) I X'="" D ;
.. ;
.. ;Q:$P(X,U,9)="C" ; Skip if cancelled.
.. I '$G(INCLCANC) Q:$P(X,U,9)="C" ; Skip if cancelled.
.. S DFN=$P(X,U,1) Q:'DFN ; Skip if bad data.
.. S DATENTRD=$P(X,U,7) Q:DATENTRD<CONVDATE ; Skip if entered before conversion date
.. ;
.. ; Find record in Patient file and in SDEC Appointment file (if present)
.. ;
.. S PTAPPT=$G(^DPT(DFN,"S",APPTDTTM,0)),PTAPPTC=$G(^DPT(DFN,"S",APPTDTTM,"C")),ENCNTR=$P(PTAPPT,U,20) ;
.. I PTAPPT'="" Q:$P(PTAPPT,U,2)="CNV" Q:$P(PTAPPT,U,2)="C" Q:$P(PTAPPT,U,2)="PC" Q:$P(PTAPPT,U,2)="N" Q:$P(PTAPPT,U,2)="NA" Q:$P(PTAPPT,U,9)="C" Q:$P(PTAPPTC,U,6)'="" ; Skip if converted, no-show, cancelled or checked out.
.. S SDECIEN=0 F S SDECIEN=$O(^SDEC(409.84,"B",APPTDTTM,SDECIEN)) Q:'SDECIEN S SDECAPPT=$G(^SDEC(409.84,SDECIEN,0)) I $P(SDECAPPT,U,5)=DFN,$P(SDECAPPT,U,12)="" Q ;
.. I 'SDECIEN S SDECAPPT="" ;
.. I SDECAPPT'="" Q:$P(SDECAPPT,U,17)="CNV" Q:$P(SDECAPPT,U,12)'="" Q:$P(SDECAPPT,U,23)'="" Q:$P(SDECAPPT,U,14)'="" ; Skip if converted, cancelled, no-show or checked out
.. ;
.. ; Filter report
.. ;
.. I RPTYPE="LIST",FILTER=2,ENCNTR="" Q ;
.. I RPTYPE="LIST",FILTER=3,ENCNTR'="" Q ;
.. I RPTYPE="LIST",FILTER=4,ENCNTR'="",$$ENCTRSTS^EHM13UTIL(ENCNTR)="ACTION REQUIRED",'$$MPTYNCTR^EHM13UTIL(ENCNTR) Q ; Appointers without ACTION REQUIRED encounters
.. ;
.. ; ACTION REQUIRED Encounters only
.. ;
.. I $G(ACTREQ) Q:ENCNTR="" Q:$$ENCTRSTS^EHM13UTIL(ENCNTR)'="ACTION REQUIRED" Q:$$MPTYNCTR^EHM13UTIL(ENCNTR) ;
.. ;
.. ; Build ^TMP($J) in sort order
.. ;
.. S CTR=CTR+1 I CTR#100=0,'QUEUED D PROGRESS^EHM13UTIL(CTR) ;
.. ;
.. ; Build ^TMP($J) in sort order
.. ;
.. I SORTORDR=1 D Q ;
... S ^TMP($J,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,$$GET1^DIQ(44,IEN,.01)_U_IEN,44)=IEN2_U_X ;
... I PTAPPT'="" S ^TMP($J,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,$$GET1^DIQ(44,IEN,.01)_U_IEN,2)=PTAPPT ;
... I SDECIEN S ^TMP($J,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,$$GET1^DIQ(44,IEN,.01)_U_IEN,409.84)=SDECIEN_U_SDECAPPT ;
.. ;
.. I SORTORDR=2 D Q ;
... S ^TMP($J,$$GET1^DIQ(44,IEN,.01)_U_IEN,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,44)=IEN2_U_X ;
... I PTAPPT'="" S ^TMP($J,$$GET1^DIQ(44,IEN,.01)_U_IEN,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,2)=PTAPPT ;
... I SDECIEN S ^TMP($J,$$GET1^DIQ(44,IEN,.01)_U_IEN,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,409.84)=SDECIEN_U_SDECAPPT ;
.. ;
.. I SORTORDR=3 D Q ;
... S ^TMP($J,$$GET1^DIQ(2,DFN,.01)_U_DFN,APPTDTTM,$$GET1^DIQ(44,IEN,.01)_U_IEN,44)=IEN2_U_X ;
... I PTAPPT'="" S ^TMP($J,$$GET1^DIQ(2,DFN,.01)_U_DFN,APPTDTTM,$$GET1^DIQ(44,IEN,.01)_U_IEN,2)=PTAPPT ;
... I SDECIEN S ^TMP($J,$$GET1^DIQ(2,DFN,.01)_U_DFN,APPTDTTM,$$GET1^DIQ(44,IEN,.01)_U_IEN,409.84)=SDECIEN_U_SDECAPPT ;
;
Q ;
;
POSTLIST ;
;
; List appointments entered after conversion.
;
N RPTYPE,CONVDATE,SORTORDR,DFN,APPTDTTM,CLINIC,X1,X2,X3,LASTFI,SORT1,SORT2,SORT3,OUTPTFMT,Y,POP,%ZIS,DIRUT,QUEUED,OUTPTFMT,TITLE,CLINICS,NONCOUNT ;
;
S RPTYPE="LIST" D POSTSLCT(RPTYPE,.CONVDATE,.SORTORDR,.CLINFLTR,.CLINICS,.FILTER,.NONCOUNT) Q:$D(DIRUT) Q:CONVDATE="" Q:SORTORDR="" Q:CLINFLTR="" Q:FILTER="" Q:NONCOUNT="" ;
;
; Output format
;
S OUTPTFMT=$$RPTFMT^EHM13UTIL() Q:OUTPTFMT="" ;
;
S %ZIS="Q" D ^%ZIS I POP K ^TMP($J) Q ;
;
; If report is queued, add to Taskman
;
S QUEUED=0 I $D(IO("Q")) S QUEUED=1 D Q ;
. N ZTDESC,ZTRTN,ZTSAVE,ZTSK ;
. S ZTRTN="POSTLST1^EHMAPPTZ0",ZTDESC="Post Go-Live Appointment List" ;
. S ZTSAVE("*")="" ;
. D ^%ZTLOAD W $S($D(ZTSK):"...Task queued",1:"...Task cancelled"),! ;
;
POSTLST1 ; TaskMan start point
;
; Build list of converted appointments.
;
U IO D POSTLIVE(RPTYPE,CONVDATE,SORTORDR,CLINFLTR,.CLINICS,FILTER,NONCOUNT,QUEUED,0,0) ; Build list of appointments.
;
; List appointments
;
S TITLE="Post Go-Live Appointment List ("_$P("All Appointments^Appointments With Encounters^Appointments Without Encounters^Appointments Without ACTION REQUIRED Encounters",U,FILTER)_")" ;
I OUTPTFMT="F" D APPTLSTF^EHMAPPTZ(TITLE,CONVDATE,SORTORDR,2,QUEUED) ; Formatted report
I OUTPTFMT="C" D APPTLSTC^EHMAPPTZ(TITLE,SORTORDR,2) ; Comma-delimited file
;
D ^%ZISC ;
K ^TMP($J) ;
Q ;
;
SUMMARY ;
;
; Output summary of appointments entered post go-live.
;
N CONVDATE,SORTORDR,APPTDTTM,CLINNAME,SORT1,SORT2,SORT3,YYYYMM,POP,%ZIS,DIRUT,TITLE ;
;
S RPTYPE="SUMMARY" D POSTSLCT(RPTYPE,.CONVDATE,1,.CLINFLTR) Q:$D(DIRUT) Q:CONVDATE="" Q:CLINFLTR="" ;
;
S %ZIS="Q" D ^%ZIS I POP K ^TMP($J) Q ;
;
; If report is queued, add to Taskman
;
S QUEUED=0 I $D(IO("Q")) S QUEUED=1 D Q ;
. N ZTDESC,ZTRTN,ZTSAVE,ZTSK ;
. S ZTRTN="SUMMARY1^EHMAPPT0",ZTDESC="Appointment Summary" ;
. S ZTSAVE("*")="" ;
. D ^%ZTLOAD W $S($D(ZTSK):"...Task queued",1:"...Task cancelled"),! ;
;
SUMMARY1 ; TaskMan entry point
;
; Output summary report.
;
N TITLE ;
;
; Build list of converted appointments.
;
U IO D POSTLIVE(RPTYPE,CONVDATE,1,CLINFLTR,,QUEUED) ; Build list of appointments.
S TITLE(1)="POST-CONVERSION APPOINTMENT SUMMARY" ;
;
; Output summary report.
;
D SUMOUT^EHMAPPT2(.TITLE,CONVDATE,QUEUED) ;
Q ;
;
ALLSLCT(RPTYPE,SORTORDR,CLINFLTR) ;
;
; Select parameters for list or summary.
;
; RPTYPE = Report type (LIST or SUMMARY) [REQUIRED]
; SORTORDR = Sort order (1,2,3) [RETURNED]
; CLINFLTR = Clinic filter (A or S^clinic IEN)
;
I $G(RPTYPE)="" Q ;
;
N DIR,Y,DIC,X ;
;
S (CLINFLTR,FILTER)="" ;
;
; Sort Order
;
K DIR ;
I $G(SORTORDR)="" S DIR(0)="S^1:Appointment Date/Time, Patient, Clinic;2:Clinic, Appointment Date/Time, Patient;3:Patient, Appointment Date/Time, Clinic",DIR("A")="Sort Order",DIR("B")=1 D ^DIR Q:Y="" Q:$D(DIRUT) S SORTORDR=Y ;
;
; All clinics or single clinic?
;
K DIR ;
S DIR(0)="SO^A:All;S:Single",DIR("A")="Clinics",DIR("B")="All" D ^DIR Q:$D(DIRUT) S CLINFLTR=Y ;
;
; Select clinic to include.
;
I CLINFLTR="S" K DIC S DIC=44,DIC(0)="AEQM" D ^DIC Q:$D(DIRUT) "" Q:Y=-1 S CLINFLTR="S"_U_(+Y) ;
;
Q ;
;
ALLAPPTS(RPTYPE,SORTORDR,CLINFLTR,QUEUED) ;
;
; RPTYPE = Report type (LIST or SUMMARY) [REQUIRED]
; SORTORDR = Sort order (1,2,3) [REQUIRED]
; CLINFLTR = Clinic filter (A or S^clinic IEN) [REQUIRED]
; QUEUED = 1 if report queued, 0 otherwise ;
;
; All appointments list.
; Returns list in ^TMP($J).
;
; ^TMP($J)=SORT ORDER (1,2,3)
; ^TMP($J,sorted values,409.84)=pointer to #409.84 ^ 0 node from file #409.84
; ^TMP($J,sorted values,2)=0 node from appointment multiple in file #2
; ^TMP($J,sorted values,44)=ien of appointment multiple in file #44 ^ 0 node from appointment in file #44
;
; sorted values are made up of: appointment date/time in FileMan format (e.g., 3230701.1209)
; patient as LAST NAME,FIRST NAME ^ DFN (e.g., SMITH,JOHN A^12345)
; clinic as NAME ^ IEN in file #44. (e.g., MEDICAL CLINIC^12345)
;
N IEN,I,APPTDTTM,IEN2,X,DFN,PTAPPT,ENCNTR,SDECIEN,SDECAPPT,PTAPPTC ;
;
K ^TMP($J) ;
I 'QUEUED U 0 W !,"Scanning ",$P(^DIC(44,0),U,1)," file.",! ;
;
S IEN=$S($P(CLINFLTR,U,1)="A":0,1:$P(CLINFLTR,U,2)-.000001),I=0 ;
F S IEN=$O(^SC(IEN)) Q:'IEN Q:$P(CLINFLTR,U,1)="S"&(IEN>$P(CLINFLTR,U,2)) I $$GET1^DIQ(44,IEN,2)="CLINIC" S APPTDTTM=0 F S APPTDTTM=$O(^SC(IEN,"S",APPTDTTM)) Q:'APPTDTTM D ;
. S IEN2=0 F S IEN2=$O(^SC(IEN,"S",APPTDTTM,1,IEN2)) Q:'IEN2 S X=$G(^(IEN2,0)) I X'="" D ;
.. ;
.. Q:$P(X,U,9)="C" ; Skip if cancelled.
.. Q:$$GET1^DIQ(44.003,IEN2_","_APPTDTTM_","_IEN_",",309)'="" Q:$$GET1^DIQ(44.003,IEN2_","_APPTDTTM_","_IEN_",",303)'="" ; Skip if checked in or out
.. S DFN=$P(X,U,1) Q:'DFN ; Skip if bad data.
.. ;
.. ; Find record in Patient file and in SDEC Appointment file (if present)
.. ;
.. S PTAPPT=$G(^DPT(DFN,"S",APPTDTTM,0)),PTAPPTC=$G(^DPT(DFN,"S",APPTDTTM,"C")) ;
.. ; Skip if converted, no-show, cancelled, checked out or inpatient.
.. I PTAPPT'="" Q:$P(PTAPPT,U,2)="CNV" Q:$P(PTAPPT,U,2)="C" Q:$P(PTAPPT,U,2)="PC" Q:$P(PTAPPT,U,2)="N" Q:$P(PTAPPT,U,2)="NA" Q:$P(PTAPPT,U,9)="C" Q:$P(PTAPPTC,U,6)'="" Q:$P(PTAPPT,U,2)="I" ;
.. S SDECIEN=0 F S SDECIEN=$O(^SDEC(409.84,"B",APPTDTTM,SDECIEN)) Q:'SDECIEN S SDECAPPT=$G(^SDEC(409.84,SDECIEN,0)) I $P(SDECAPPT,U,5)=DFN,$P(SDECAPPT,U,12)="" Q ;
.. I 'SDECIEN S SDECAPPT="" ;
.. ; Skip if converted, no-show, cancelled, checked out or inpatient.
.. I SDECAPPT'="" Q:$P(SDECAPPT,U,17)="CNV" Q:$P(SDECAPPT,U,12)'="" Q:$P(SDECAPPT,U,23)'="" Q:$P(SDECAPPT,U,14)'="" Q:$P(SDECAPPT,U,17)="I" ;
.. ;
.. S I=I+1 I I#100=0,'QUEUED D PROGRESS^EHM13UTIL(I) ;
.. ;
.. I SORTORDR=1 D Q ;
... S ^TMP($J,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,$$GET1^DIQ(44,IEN,.01)_U_IEN,44)=IEN2_U_X ;
... I PTAPPT'="" S ^TMP($J,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,$$GET1^DIQ(44,IEN,.01)_U_IEN,2)=PTAPPT ;
... I SDECIEN S ^TMP($J,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,$$GET1^DIQ(44,IEN,.01)_U_IEN,409.84)=SDECIEN_U_SDECAPPT ;
.. ;
.. I SORTORDR=2 D Q ;
... S ^TMP($J,$$GET1^DIQ(44,IEN,.01)_U_IEN,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,44)=IEN2_U_X ;
... I PTAPPT'="" S ^TMP($J,$$GET1^DIQ(44,IEN,.01)_U_IEN,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,2)=PTAPPT ;
... I SDECIEN S ^TMP($J,$$GET1^DIQ(44,IEN,.01)_U_IEN,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,409.84)=SDECIEN_U_SDECAPPT ;
.. ;
.. I SORTORDR=3 D Q ;
... S ^TMP($J,$$GET1^DIQ(2,DFN,.01)_U_DFN,APPTDTTM,$$GET1^DIQ(44,IEN,.01)_U_IEN,44)=IEN2_U_X ;
... I PTAPPT'="" S ^TMP($J,$$GET1^DIQ(2,DFN,.01)_U_DFN,APPTDTTM,$$GET1^DIQ(44,IEN,.01)_U_IEN,2)=PTAPPT ;
... I SDECIEN S ^TMP($J,$$GET1^DIQ(2,DFN,.01)_U_DFN,APPTDTTM,$$GET1^DIQ(44,IEN,.01)_U_IEN,409.84)=SDECIEN_U_SDECAPPT ;
;
Q ;
;
APPTLIST ;
;
; List all appointments.
;
N RPTYPE,SORTORDR,DFN,APPTDTTM,CLINIC,X1,X2,X3,LASTFI,SORT1,SORT2,SORT3,OUTPTFMT,Y,POP,%ZIS,DIRUT,QUEUED,OUTPTFMT,TITLE ;
;
S RPTYPE="LIST" D ALLSLCT(RPTYPE,.SORTORDR,.CLINFLTR) Q:$D(DIRUT) Q:SORTORDR="" Q:CLINFLTR="" ;
;
; Output format
;
K DIR S DIR(0)="SO^F:Formatted Report;C:Comma-Delimited",DIR("A")="Output Format",DIR("B")="Formatted Report" D ^DIR Q:$D(DIRUT) S OUTPTFMT=Y ;
;
S %ZIS="Q" D ^%ZIS I POP K ^TMP($J) Q ;
;
; If report is queued, add to Taskman
;
S QUEUED=0 I $D(IO("Q")) S QUEUED=1 D Q ;
. N ZTDESC,ZTRTN,ZTSAVE,ZTSK ;
. S ZTRTN="APPTLST1^EHMAPPT0",ZTDESC="Appointment List" ;
. S ZTSAVE("*")="" ;
. D ^%ZTLOAD W $S($D(ZTSK):"...Task queued",1:"...Task cancelled"),! ;
;
APPTLST1 ; TaskMan start point
;
; Build list of converted appointments.
;
U IO D ALLAPPTS(RPTYPE,SORTORDR,CLINFLTR,QUEUED) ; Build list of converted appointments.
;
; List appointments
;
S TITLE="All Appointments List" ;
I $P(CLINFLTR,U,1)="S" S TITLE=TITLE_" - "_$$GET1^DIQ(44,$P(CLINFLTR,U,2),.01) ;
;
I OUTPTFMT="F" D APPTLSTF^EHMAPPT(TITLE,"",SORTORDR,1,QUEUED) ; Formatted report
I OUTPTFMT="C" D APPTLSTC^EHMAPPT(TITLE,SORTORDR,1) ; Comma-delimited file
;
D ^%ZISC ;
K ^TMP($J) ;
Q ;
;
APPTSMRY ;
;
; Output summary of converted appointments.
;
N RPTYPE,POP,%ZIS,DIRUT,CLINFLTR,QUEUED ;
;
S RPTYPE="SUMMARY" D ALLSLCT(RPTYPE,1,.CLINFLTR) Q:$D(DIRUT) Q:CLINFLTR="" ;
;
S %ZIS="Q" D ^%ZIS I POP K ^TMP($J) Q ;
;
; If report is queued, add to Taskman
;
S QUEUED=0 I $D(IO("Q")) S QUEUED=1 D Q ;
. N ZTDESC,ZTRTN,ZTSAVE,ZTSK ;
. S ZTRTN="APTSMRY1^EHMAPPT0",ZTDESC="Appointment Summary" ;
. S ZTSAVE("*")="" ;
. D ^%ZTLOAD W $S($D(ZTSK):"...Task queued",1:"...Task cancelled"),! ;
;
APTSMRY1 ; TaskMan entry point
;
; Output summary report.
;
N TITLE ;
;
; Build list of appointments.
;
U IO D ALLAPPTS(RPTYPE,1,CLINFLTR,QUEUED) ; Build list of appointments.
;
; Output summary report.
;
S TITLE(1)="ALL APPOINTMENT SUMMARY" ;
I $P(CLINFLTR,U,1)="S" S TITLE(2)=$$GET1^DIQ(44,$P(CLINFLTR,U,2),.01) ;
D SUMOUT^EHMAPPT2(.TITLE,,QUEUED) ;
;
D ^%ZISC ;
K ^TMP($J) ;
Q ;
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HEHMAPPTZ0 15465 printed Apr 22, 2026@13:48:23 Page 2
EHMAPPTZ0 ;ALB/WTC - EHRM APPOINTMENT MAINTENANCE; Jun 05, 2025@14:52:49
+1 ;;1.0;ELECTRONIC HEALTH MODERNIZATION;**13**;Apr 19, 2021;Build 27
+2 ;
+3 ; Clone of EHMAPPT0 but reports show Encounter IEN.
+4 ;
+5 ;
QUIT
+6 ;
POSTSLCT(RPTYPE,CONVDATE,SORTORDR,CLINFLTR,CLINICS,FILTER,NONCOUNT) ;
+1 ;
+2 ; Select parameters for list or summary.
+3 ;
+4 ; RPTYPE = Report type (LIST, SUMMARY or OTHER) [REQUIRED]
+5 ; CONVDATE = Date of conversion [RETURNED]
+6 ; SORTORDR = Sort order (1,2,3) [RETURNED]
+7 ; CLINFLTR = Clinic filter (A or S^clinic IEN)
+8 ; CLINICS = Clinics to include/exclude [RETURNED]
+9 ; FILTER = Encounter filter (ALL, WITH or WITHOUT) [RETURNED]
+10 ; NONCOUNT = Include/exclude non-count clinics [RETURNED]
+11 ;
+12 ;
IF $GET(RPTYPE)=""
QUIT
+13 ;
+14 ;
NEW DIR,Y,DIC,X
+15 ;
+16 ;
SET (CONVDATE,CLINFLTR,FILTER)=""
+17 ;
+18 ; Conversion date
+19 ;
+20 ;
SET CONVDATE=$$CONVDATE^EHM13UTIL()
if CONVDATE=""
QUIT
+21 ;
+22 ; Sort Order
+23 ;
+24 ;
IF $GET(SORTORDR)=""
SET SORTORDR=$$SORTORDR^EHM13UTIL()
if SORTORDR=""
QUIT
+25 ;
+26 ; Include/exclude noncount clinics
+27 ;
+28 ;
SET NONCOUNT=$$NONCOUNT^EHM13UTIL()
if NONCOUNT=""
QUIT
+29 ;
+30 ; All clinics, All except some clinics, selected clinics.
+31 ;
+32 ;
SET CLINFLTR=$$CLINICS^EHM13UTIL(.CLINICS)
if CLINFLTR=""
QUIT
+33 ;
+34 ; All appointments or with/without encounters only
+35 ;
+36 ;
SET FILTER=""
IF RPTYPE="LIST"
SET FILTER=$$FILTER^EHM13UTIL()
if FILTER=""
QUIT
+37 ;
QUIT
+38 ;
POSTLIVE(RPTYPE,CONVDATE,SORTORDR,CLINFLTR,CLINICS,FILTER,NONCOUNT,QUEUED,INCLCANC,ACTREQ) ;
+1 ;
+2 ; QUEUED = 1 if report queued, 0 otherwise
+3 ; INCLCANC = 1 if cancelled appointments included, 0 otherwise
+4 ; ACTREQ = 1 if only ACTION REQUIRED encounters included, 0 otherwise
+5 ;
+6 ; See POSTSLCT for remaining parameter definitions
+7 ;
+8 ; Post go-live appointment list. Select appointments after conversion date that were made after the conversion date.
+9 ; Returns list in ^TMP($J).
+10 ;
+11 ; ^TMP($J)=SORT ORDER (1,2,3)
+12 ; ^TMP($J,sorted values,409.84)=pointer to #409.84 ^ 0 node from file #409.84
+13 ; ^TMP($J,sorted values,2)=0 node from appointment multiple in file #2
+14 ; ^TMP($J,sorted values,44)=ien of appointment multiple in file #44 ^ 0 node from appointment in file #44
+15 ;
+16 ; sorted values are made up of: appointment date/time in FileMan format (e.g., 3230701.1209)
+17 ; patient as LAST NAME,FIRST NAME ^ DFN (e.g., SMITH,JOHN A^12345)
+18 ; clinic as NAME ^ IEN in file #44. (e.g., MEDICAL CLINIC^12345)
+19 ;
+20 ;
NEW IEN,CTR,APPTDTTM,IEN2,X,DFN,DATENTRD,PTAPPT,ENCNTR,SDECIEN,SDECAPPT
+21 ;
+22 ;
KILL ^TMP($JOB)
+23 ;
IF 'QUEUED
USE 0
WRITE !,"Scanning ",$PIECE(^DIC(44,0),U,1)," file.",!
+24 ;
+25 ;S IEN=$S($P(CLINFLTR,U,1)="A":0,1:$P(CLINFLTR,U,2)-.000001),I=0 ;
+26 ;
SET IEN=0
SET CTR=0
+27 ;F S IEN=$O(^SC(IEN)) Q:'IEN Q:$P(CLINFLTR,U,1)="S"&(IEN>$P(CLINFLTR,U,2)) I $$GET1^DIQ(44,IEN,2)="CLINIC",'$D(^EHRM(1610,"B",IEN)) D ;
+28 ;
FOR
SET IEN=$ORDER(^SC(IEN))
if 'IEN
QUIT
IF $$GET1^DIQ(44,IEN,2)="CLINIC"
IF '$DATA(^EHRM(1610,"B",IEN))
Begin DoDot:1
+29 ;
+30 ; Exclude non-count clinic
IF NONCOUNT="E"
IF $$GET1^DIQ(44,IEN,2502)="YES"
QUIT
+31 ;
IF CLINFLTR="X"
IF $DATA(CLINICS(IEN))
if CLINICS(IEN)="EXCLUDE"
QUIT
+32 ;
IF CLINFLTR="S"
if '$DATA(CLINICS(IEN))
QUIT
+33 ;
+34 ;
SET APPTDTTM=CONVDATE-.000001
FOR
SET APPTDTTM=$ORDER(^SC(IEN,"S",APPTDTTM))
if 'APPTDTTM
QUIT
SET IEN2=0
FOR
SET IEN2=$ORDER(^SC(IEN,"S",APPTDTTM,1,IEN2))
if 'IEN2
QUIT
SET X=$GET(^(IEN2,0))
IF X'=""
Begin DoDot:2
+35 ;
+36 ;Q:$P(X,U,9)="C" ; Skip if cancelled.
+37 ; Skip if cancelled.
IF '$GET(INCLCANC)
if $PIECE(X,U,9)="C"
QUIT
+38 ; Skip if bad data.
SET DFN=$PIECE(X,U,1)
if 'DFN
QUIT
+39 ; Skip if entered before conversion date
SET DATENTRD=$PIECE(X,U,7)
if DATENTRD<CONVDATE
QUIT
+40 ;
+41 ; Find record in Patient file and in SDEC Appointment file (if present)
+42 ;
+43 ;
SET PTAPPT=$GET(^DPT(DFN,"S",APPTDTTM,0))
SET PTAPPTC=$GET(^DPT(DFN,"S",APPTDTTM,"C"))
SET ENCNTR=$PIECE(PTAPPT,U,20)
+44 ; Skip if converted, no-show, cancelled or checked out.
IF PTAPPT'=""
if $PIECE(PTAPPT,U,2)="CNV"
QUIT
if $PIECE(PTAPPT,U,2)="C"
QUIT
if $PIECE(PTAPPT,U,2)="PC"
QUIT
if $PIECE(PTAPPT,U,2)="N"
QUIT
if $PIECE(PTAPPT,U,2)="NA"
QUIT
if $PIECE(PTAPPT,U,9)="C"
QUIT
if $PIECE(PTAPPTC,U,6)'=""
QUIT
+45 ;
SET SDECIEN=0
FOR
SET SDECIEN=$ORDER(^SDEC(409.84,"B",APPTDTTM,SDECIEN))
if 'SDECIEN
QUIT
SET SDECAPPT=$GET(^SDEC(409.84,SDECIEN,0))
IF $PIECE(SDECAPPT,U,5)=DFN
IF $PIECE(SDECAPPT,U,12)=""
QUIT
+46 ;
IF 'SDECIEN
SET SDECAPPT=""
+47 ; Skip if converted, cancelled, no-show or checked out
IF SDECAPPT'=""
if $PIECE(SDECAPPT,U,17)="CNV"
QUIT
if $PIECE(SDECAPPT,U,12)'=""
QUIT
if $PIECE(SDECAPPT,U,23)'=""
QUIT
if $PIECE(SDECAPPT,U,14)'=""
QUIT
+48 ;
+49 ; Filter report
+50 ;
+51 ;
IF RPTYPE="LIST"
IF FILTER=2
IF ENCNTR=""
QUIT
+52 ;
IF RPTYPE="LIST"
IF FILTER=3
IF ENCNTR'=""
QUIT
+53 ; Appointers without ACTION REQUIRED encounters
IF RPTYPE="LIST"
IF FILTER=4
IF ENCNTR'=""
IF $$ENCTRSTS^EHM13UTIL(ENCNTR)="ACTION REQUIRED"
IF '$$MPTYNCTR^EHM13UTIL(ENCNTR)
QUIT
+54 ;
+55 ; ACTION REQUIRED Encounters only
+56 ;
+57 ;
IF $GET(ACTREQ)
if ENCNTR=""
QUIT
if $$ENCTRSTS^EHM13UTIL(ENCNTR)'="ACTION REQUIRED"
QUIT
if $$MPTYNCTR^EHM13UTIL(ENCNTR)
QUIT
+58 ;
+59 ; Build ^TMP($J) in sort order
+60 ;
+61 ;
SET CTR=CTR+1
IF CTR#100=0
IF 'QUEUED
DO PROGRESS^EHM13UTIL(CTR)
+62 ;
+63 ; Build ^TMP($J) in sort order
+64 ;
+65 ;
IF SORTORDR=1
Begin DoDot:3
+66 ;
SET ^TMP($JOB,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,$$GET1^DIQ(44,IEN,.01)_U_IEN,44)=IEN2_U_X
+67 ;
IF PTAPPT'=""
SET ^TMP($JOB,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,$$GET1^DIQ(44,IEN,.01)_U_IEN,2)=PTAPPT
+68 ;
IF SDECIEN
SET ^TMP($JOB,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,$$GET1^DIQ(44,IEN,.01)_U_IEN,409.84)=SDECIEN_U_SDECAPPT
End DoDot:3
QUIT
+69 ;
+70 ;
IF SORTORDR=2
Begin DoDot:3
+71 ;
SET ^TMP($JOB,$$GET1^DIQ(44,IEN,.01)_U_IEN,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,44)=IEN2_U_X
+72 ;
IF PTAPPT'=""
SET ^TMP($JOB,$$GET1^DIQ(44,IEN,.01)_U_IEN,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,2)=PTAPPT
+73 ;
IF SDECIEN
SET ^TMP($JOB,$$GET1^DIQ(44,IEN,.01)_U_IEN,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,409.84)=SDECIEN_U_SDECAPPT
End DoDot:3
QUIT
+74 ;
+75 ;
IF SORTORDR=3
Begin DoDot:3
+76 ;
SET ^TMP($JOB,$$GET1^DIQ(2,DFN,.01)_U_DFN,APPTDTTM,$$GET1^DIQ(44,IEN,.01)_U_IEN,44)=IEN2_U_X
+77 ;
IF PTAPPT'=""
SET ^TMP($JOB,$$GET1^DIQ(2,DFN,.01)_U_DFN,APPTDTTM,$$GET1^DIQ(44,IEN,.01)_U_IEN,2)=PTAPPT
+78 ;
IF SDECIEN
SET ^TMP($JOB,$$GET1^DIQ(2,DFN,.01)_U_DFN,APPTDTTM,$$GET1^DIQ(44,IEN,.01)_U_IEN,409.84)=SDECIEN_U_SDECAPPT
End DoDot:3
QUIT
End DoDot:2
End DoDot:1
+79 ;
+80 ;
QUIT
+81 ;
POSTLIST ;
+1 ;
+2 ; List appointments entered after conversion.
+3 ;
+4 ;
NEW RPTYPE,CONVDATE,SORTORDR,DFN,APPTDTTM,CLINIC,X1,X2,X3,LASTFI,SORT1,SORT2,SORT3,OUTPTFMT,Y,POP,%ZIS,DIRUT,QUEUED,OUTPTFMT,TITLE,CLINICS,NONCOUNT
+5 ;
+6 ;
SET RPTYPE="LIST"
DO POSTSLCT(RPTYPE,.CONVDATE,.SORTORDR,.CLINFLTR,.CLINICS,.FILTER,.NONCOUNT)
if $DATA(DIRUT)
QUIT
if CONVDATE=""
QUIT
if SORTORDR=""
QUIT
if CLINFLTR=""
QUIT
if FILTER=""
QUIT
if NONCOUNT=""
QUIT
+7 ;
+8 ; Output format
+9 ;
+10 ;
SET OUTPTFMT=$$RPTFMT^EHM13UTIL()
if OUTPTFMT=""
QUIT
+11 ;
+12 ;
SET %ZIS="Q"
DO ^%ZIS
IF POP
KILL ^TMP($JOB)
QUIT
+13 ;
+14 ; If report is queued, add to Taskman
+15 ;
+16 ;
SET QUEUED=0
IF $DATA(IO("Q"))
SET QUEUED=1
Begin DoDot:1
+17 ;
NEW ZTDESC,ZTRTN,ZTSAVE,ZTSK
+18 ;
SET ZTRTN="POSTLST1^EHMAPPTZ0"
SET ZTDESC="Post Go-Live Appointment List"
+19 ;
SET ZTSAVE("*")=""
+20 ;
DO ^%ZTLOAD
WRITE $SELECT($DATA(ZTSK):"...Task queued",1:"...Task cancelled"),!
End DoDot:1
QUIT
+21 ;
POSTLST1 ; TaskMan start point
+1 ;
+2 ; Build list of converted appointments.
+3 ;
+4 ; Build list of appointments.
USE IO
DO POSTLIVE(RPTYPE,CONVDATE,SORTORDR,CLINFLTR,.CLINICS,FILTER,NONCOUNT,QUEUED,0,0)
+5 ;
+6 ; List appointments
+7 ;
+8 ;
SET TITLE="Post Go-Live Appointment List ("_$PIECE("All Appointments^Appointments With Encounters^Appointments Without Encounters^Appointments Without ACTION REQUIRED Encounters",U,FILTER)_")"
+9 ; Formatted report
IF OUTPTFMT="F"
DO APPTLSTF^EHMAPPTZ(TITLE,CONVDATE,SORTORDR,2,QUEUED)
+10 ; Comma-delimited file
IF OUTPTFMT="C"
DO APPTLSTC^EHMAPPTZ(TITLE,SORTORDR,2)
+11 ;
+12 ;
DO ^%ZISC
+13 ;
KILL ^TMP($JOB)
+14 ;
QUIT
+15 ;
SUMMARY ;
+1 ;
+2 ; Output summary of appointments entered post go-live.
+3 ;
+4 ;
NEW CONVDATE,SORTORDR,APPTDTTM,CLINNAME,SORT1,SORT2,SORT3,YYYYMM,POP,%ZIS,DIRUT,TITLE
+5 ;
+6 ;
SET RPTYPE="SUMMARY"
DO POSTSLCT(RPTYPE,.CONVDATE,1,.CLINFLTR)
if $DATA(DIRUT)
QUIT
if CONVDATE=""
QUIT
if CLINFLTR=""
QUIT
+7 ;
+8 ;
SET %ZIS="Q"
DO ^%ZIS
IF POP
KILL ^TMP($JOB)
QUIT
+9 ;
+10 ; If report is queued, add to Taskman
+11 ;
+12 ;
SET QUEUED=0
IF $DATA(IO("Q"))
SET QUEUED=1
Begin DoDot:1
+13 ;
NEW ZTDESC,ZTRTN,ZTSAVE,ZTSK
+14 ;
SET ZTRTN="SUMMARY1^EHMAPPT0"
SET ZTDESC="Appointment Summary"
+15 ;
SET ZTSAVE("*")=""
+16 ;
DO ^%ZTLOAD
WRITE $SELECT($DATA(ZTSK):"...Task queued",1:"...Task cancelled"),!
End DoDot:1
QUIT
+17 ;
SUMMARY1 ; TaskMan entry point
+1 ;
+2 ; Output summary report.
+3 ;
+4 ;
NEW TITLE
+5 ;
+6 ; Build list of converted appointments.
+7 ;
+8 ; Build list of appointments.
USE IO
DO POSTLIVE(RPTYPE,CONVDATE,1,CLINFLTR,,QUEUED)
+9 ;
SET TITLE(1)="POST-CONVERSION APPOINTMENT SUMMARY"
+10 ;
+11 ; Output summary report.
+12 ;
+13 ;
DO SUMOUT^EHMAPPT2(.TITLE,CONVDATE,QUEUED)
+14 ;
QUIT
+15 ;
ALLSLCT(RPTYPE,SORTORDR,CLINFLTR) ;
+1 ;
+2 ; Select parameters for list or summary.
+3 ;
+4 ; RPTYPE = Report type (LIST or SUMMARY) [REQUIRED]
+5 ; SORTORDR = Sort order (1,2,3) [RETURNED]
+6 ; CLINFLTR = Clinic filter (A or S^clinic IEN)
+7 ;
+8 ;
IF $GET(RPTYPE)=""
QUIT
+9 ;
+10 ;
NEW DIR,Y,DIC,X
+11 ;
+12 ;
SET (CLINFLTR,FILTER)=""
+13 ;
+14 ; Sort Order
+15 ;
+16 ;
KILL DIR
+17 ;
IF $GET(SORTORDR)=""
SET DIR(0)="S^1:Appointment Date/Time, Patient, Clinic;2:Clinic, Appointment Date/Time, Patient;3:Patient, Appointment Date/Time, Clinic"
SET DIR("A")="Sort Order"
SET DIR("B")=1
DO ^DIR
if Y=""
QUIT
if $DATA(DIRUT)
QUIT
SET SORTORDR=Y
+18 ;
+19 ; All clinics or single clinic?
+20 ;
+21 ;
KILL DIR
+22 ;
SET DIR(0)="SO^A:All;S:Single"
SET DIR("A")="Clinics"
SET DIR("B")="All"
DO ^DIR
if $DATA(DIRUT)
QUIT
SET CLINFLTR=Y
+23 ;
+24 ; Select clinic to include.
+25 ;
+26 ;
IF CLINFLTR="S"
KILL DIC
SET DIC=44
SET DIC(0)="AEQM"
DO ^DIC
if $DATA(DIRUT)
QUIT ""
if Y=-1
QUIT
SET CLINFLTR="S"_U_(+Y)
+27 ;
+28 ;
QUIT
+29 ;
ALLAPPTS(RPTYPE,SORTORDR,CLINFLTR,QUEUED) ;
+1 ;
+2 ; RPTYPE = Report type (LIST or SUMMARY) [REQUIRED]
+3 ; SORTORDR = Sort order (1,2,3) [REQUIRED]
+4 ; CLINFLTR = Clinic filter (A or S^clinic IEN) [REQUIRED]
+5 ; QUEUED = 1 if report queued, 0 otherwise ;
+6 ;
+7 ; All appointments list.
+8 ; Returns list in ^TMP($J).
+9 ;
+10 ; ^TMP($J)=SORT ORDER (1,2,3)
+11 ; ^TMP($J,sorted values,409.84)=pointer to #409.84 ^ 0 node from file #409.84
+12 ; ^TMP($J,sorted values,2)=0 node from appointment multiple in file #2
+13 ; ^TMP($J,sorted values,44)=ien of appointment multiple in file #44 ^ 0 node from appointment in file #44
+14 ;
+15 ; sorted values are made up of: appointment date/time in FileMan format (e.g., 3230701.1209)
+16 ; patient as LAST NAME,FIRST NAME ^ DFN (e.g., SMITH,JOHN A^12345)
+17 ; clinic as NAME ^ IEN in file #44. (e.g., MEDICAL CLINIC^12345)
+18 ;
+19 ;
NEW IEN,I,APPTDTTM,IEN2,X,DFN,PTAPPT,ENCNTR,SDECIEN,SDECAPPT,PTAPPTC
+20 ;
+21 ;
KILL ^TMP($JOB)
+22 ;
IF 'QUEUED
USE 0
WRITE !,"Scanning ",$PIECE(^DIC(44,0),U,1)," file.",!
+23 ;
+24 ;
SET IEN=$SELECT($PIECE(CLINFLTR,U,1)="A":0,1:$PIECE(CLINFLTR,U,2)-.000001)
SET I=0
+25 ;
FOR
SET IEN=$ORDER(^SC(IEN))
if 'IEN
QUIT
if $PIECE(CLINFLTR,U,1)="S"&(IEN>$PIECE(CLINFLTR,U,2))
QUIT
IF $$GET1^DIQ(44,IEN,2)="CLINIC"
SET APPTDTTM=0
FOR
SET APPTDTTM=$ORDER(^SC(IEN,"S",APPTDTTM))
if 'APPTDTTM
QUIT
Begin DoDot:1
+26 ;
SET IEN2=0
FOR
SET IEN2=$ORDER(^SC(IEN,"S",APPTDTTM,1,IEN2))
if 'IEN2
QUIT
SET X=$GET(^(IEN2,0))
IF X'=""
Begin DoDot:2
+27 ;
+28 ; Skip if cancelled.
if $PIECE(X,U,9)="C"
QUIT
+29 ; Skip if checked in or out
if $$GET1^DIQ(44.003,IEN2_","_APPTDTTM_","_IEN_",",309)'=""
QUIT
if $$GET1^DIQ(44.003,IEN2_","_APPTDTTM_","_IEN_",",303)'=""
QUIT
+30 ; Skip if bad data.
SET DFN=$PIECE(X,U,1)
if 'DFN
QUIT
+31 ;
+32 ; Find record in Patient file and in SDEC Appointment file (if present)
+33 ;
+34 ;
SET PTAPPT=$GET(^DPT(DFN,"S",APPTDTTM,0))
SET PTAPPTC=$GET(^DPT(DFN,"S",APPTDTTM,"C"))
+35 ; Skip if converted, no-show, cancelled, checked out or inpatient.
+36 ;
IF PTAPPT'=""
if $PIECE(PTAPPT,U,2)="CNV"
QUIT
if $PIECE(PTAPPT,U,2)="C"
QUIT
if $PIECE(PTAPPT,U,2)="PC"
QUIT
if $PIECE(PTAPPT,U,2)="N"
QUIT
if $PIECE(PTAPPT,U,2)="NA"
QUIT
if $PIECE(PTAPPT,U,9)="C"
QUIT
if $PIECE(PTAPPTC,U,6)'=""
QUIT
if $PIECE(PTAPPT,U,2)="I"
QUIT
+37 ;
SET SDECIEN=0
FOR
SET SDECIEN=$ORDER(^SDEC(409.84,"B",APPTDTTM,SDECIEN))
if 'SDECIEN
QUIT
SET SDECAPPT=$GET(^SDEC(409.84,SDECIEN,0))
IF $PIECE(SDECAPPT,U,5)=DFN
IF $PIECE(SDECAPPT,U,12)=""
QUIT
+38 ;
IF 'SDECIEN
SET SDECAPPT=""
+39 ; Skip if converted, no-show, cancelled, checked out or inpatient.
+40 ;
IF SDECAPPT'=""
if $PIECE(SDECAPPT,U,17)="CNV"
QUIT
if $PIECE(SDECAPPT,U,12)'=""
QUIT
if $PIECE(SDECAPPT,U,23)'=""
QUIT
if $PIECE(SDECAPPT,U,14)'=""
QUIT
if $PIECE(SDECAPPT,U,17)="I"
QUIT
+41 ;
+42 ;
SET I=I+1
IF I#100=0
IF 'QUEUED
DO PROGRESS^EHM13UTIL(I)
+43 ;
+44 ;
IF SORTORDR=1
Begin DoDot:3
+45 ;
SET ^TMP($JOB,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,$$GET1^DIQ(44,IEN,.01)_U_IEN,44)=IEN2_U_X
+46 ;
IF PTAPPT'=""
SET ^TMP($JOB,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,$$GET1^DIQ(44,IEN,.01)_U_IEN,2)=PTAPPT
+47 ;
IF SDECIEN
SET ^TMP($JOB,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,$$GET1^DIQ(44,IEN,.01)_U_IEN,409.84)=SDECIEN_U_SDECAPPT
End DoDot:3
QUIT
+48 ;
+49 ;
IF SORTORDR=2
Begin DoDot:3
+50 ;
SET ^TMP($JOB,$$GET1^DIQ(44,IEN,.01)_U_IEN,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,44)=IEN2_U_X
+51 ;
IF PTAPPT'=""
SET ^TMP($JOB,$$GET1^DIQ(44,IEN,.01)_U_IEN,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,2)=PTAPPT
+52 ;
IF SDECIEN
SET ^TMP($JOB,$$GET1^DIQ(44,IEN,.01)_U_IEN,APPTDTTM,$$GET1^DIQ(2,DFN,.01)_U_DFN,409.84)=SDECIEN_U_SDECAPPT
End DoDot:3
QUIT
+53 ;
+54 ;
IF SORTORDR=3
Begin DoDot:3
+55 ;
SET ^TMP($JOB,$$GET1^DIQ(2,DFN,.01)_U_DFN,APPTDTTM,$$GET1^DIQ(44,IEN,.01)_U_IEN,44)=IEN2_U_X
+56 ;
IF PTAPPT'=""
SET ^TMP($JOB,$$GET1^DIQ(2,DFN,.01)_U_DFN,APPTDTTM,$$GET1^DIQ(44,IEN,.01)_U_IEN,2)=PTAPPT
+57 ;
IF SDECIEN
SET ^TMP($JOB,$$GET1^DIQ(2,DFN,.01)_U_DFN,APPTDTTM,$$GET1^DIQ(44,IEN,.01)_U_IEN,409.84)=SDECIEN_U_SDECAPPT
End DoDot:3
QUIT
End DoDot:2
End DoDot:1
+58 ;
+59 ;
QUIT
+60 ;
APPTLIST ;
+1 ;
+2 ; List all appointments.
+3 ;
+4 ;
NEW RPTYPE,SORTORDR,DFN,APPTDTTM,CLINIC,X1,X2,X3,LASTFI,SORT1,SORT2,SORT3,OUTPTFMT,Y,POP,%ZIS,DIRUT,QUEUED,OUTPTFMT,TITLE
+5 ;
+6 ;
SET RPTYPE="LIST"
DO ALLSLCT(RPTYPE,.SORTORDR,.CLINFLTR)
if $DATA(DIRUT)
QUIT
if SORTORDR=""
QUIT
if CLINFLTR=""
QUIT
+7 ;
+8 ; Output format
+9 ;
+10 ;
KILL DIR
SET DIR(0)="SO^F:Formatted Report;C:Comma-Delimited"
SET DIR("A")="Output Format"
SET DIR("B")="Formatted Report"
DO ^DIR
if $DATA(DIRUT)
QUIT
SET OUTPTFMT=Y
+11 ;
+12 ;
SET %ZIS="Q"
DO ^%ZIS
IF POP
KILL ^TMP($JOB)
QUIT
+13 ;
+14 ; If report is queued, add to Taskman
+15 ;
+16 ;
SET QUEUED=0
IF $DATA(IO("Q"))
SET QUEUED=1
Begin DoDot:1
+17 ;
NEW ZTDESC,ZTRTN,ZTSAVE,ZTSK
+18 ;
SET ZTRTN="APPTLST1^EHMAPPT0"
SET ZTDESC="Appointment List"
+19 ;
SET ZTSAVE("*")=""
+20 ;
DO ^%ZTLOAD
WRITE $SELECT($DATA(ZTSK):"...Task queued",1:"...Task cancelled"),!
End DoDot:1
QUIT
+21 ;
APPTLST1 ; TaskMan start point
+1 ;
+2 ; Build list of converted appointments.
+3 ;
+4 ; Build list of converted appointments.
USE IO
DO ALLAPPTS(RPTYPE,SORTORDR,CLINFLTR,QUEUED)
+5 ;
+6 ; List appointments
+7 ;
+8 ;
SET TITLE="All Appointments List"
+9 ;
IF $PIECE(CLINFLTR,U,1)="S"
SET TITLE=TITLE_" - "_$$GET1^DIQ(44,$PIECE(CLINFLTR,U,2),.01)
+10 ;
+11 ; Formatted report
IF OUTPTFMT="F"
DO APPTLSTF^EHMAPPT(TITLE,"",SORTORDR,1,QUEUED)
+12 ; Comma-delimited file
IF OUTPTFMT="C"
DO APPTLSTC^EHMAPPT(TITLE,SORTORDR,1)
+13 ;
+14 ;
DO ^%ZISC
+15 ;
KILL ^TMP($JOB)
+16 ;
QUIT
+17 ;
APPTSMRY ;
+1 ;
+2 ; Output summary of converted appointments.
+3 ;
+4 ;
NEW RPTYPE,POP,%ZIS,DIRUT,CLINFLTR,QUEUED
+5 ;
+6 ;
SET RPTYPE="SUMMARY"
DO ALLSLCT(RPTYPE,1,.CLINFLTR)
if $DATA(DIRUT)
QUIT
if CLINFLTR=""
QUIT
+7 ;
+8 ;
SET %ZIS="Q"
DO ^%ZIS
IF POP
KILL ^TMP($JOB)
QUIT
+9 ;
+10 ; If report is queued, add to Taskman
+11 ;
+12 ;
SET QUEUED=0
IF $DATA(IO("Q"))
SET QUEUED=1
Begin DoDot:1
+13 ;
NEW ZTDESC,ZTRTN,ZTSAVE,ZTSK
+14 ;
SET ZTRTN="APTSMRY1^EHMAPPT0"
SET ZTDESC="Appointment Summary"
+15 ;
SET ZTSAVE("*")=""
+16 ;
DO ^%ZTLOAD
WRITE $SELECT($DATA(ZTSK):"...Task queued",1:"...Task cancelled"),!
End DoDot:1
QUIT
+17 ;
APTSMRY1 ; TaskMan entry point
+1 ;
+2 ; Output summary report.
+3 ;
+4 ;
NEW TITLE
+5 ;
+6 ; Build list of appointments.
+7 ;
+8 ; Build list of appointments.
USE IO
DO ALLAPPTS(RPTYPE,1,CLINFLTR,QUEUED)
+9 ;
+10 ; Output summary report.
+11 ;
+12 ;
SET TITLE(1)="ALL APPOINTMENT SUMMARY"
+13 ;
IF $PIECE(CLINFLTR,U,1)="S"
SET TITLE(2)=$$GET1^DIQ(44,$PIECE(CLINFLTR,U,2),.01)
+14 ;
DO SUMOUT^EHMAPPT2(.TITLE,,QUEUED)
+15 ;
+16 ;
DO ^%ZISC
+17 ;
KILL ^TMP($JOB)
+18 ;
QUIT
+19 ;