| 1 | SDCNSLT ;ALB/HAG-LINK APPOINTMENTS TO CONSULTS; 4/12/05 3:44pm  ; Compiled February 5, 2007 14:09:59
 | 
|---|
| 2 |  ;;5.3;Scheduling;**478,496**;Aug 13, 1993;Build 11
 | 
|---|
| 3 | A ;===GET ACTIVE AND PENDING CONSULT
 | 
|---|
| 4 |  N A,ND,CNT,CONS,CPRSTAT,DTENTR,DTIN,DTLMT,DTR,NOS,NOSHOW,SENDER,SERVICE,SRV,P8,PROC,PT,PTNM,STATUS
 | 
|---|
| 5 |  K TMP S NOSHOW="no-show",CNT=0,$P(DSH,"-",IOM-1)="",PT=DFN,X1=DT,X2=-365 D C^%DTC S DTLMT=X
 | 
|---|
| 6 |  S A=":" F  S A=$O(^GMR(123,"F",PT,A),-1) Q:'+A  S ND=$G(^GMR(123,A,0)) Q:ND=""  S PROC=$P($G(^GMR(123,A,1.11)),U),DTENTR=$P(ND,U) I DTENTR>DTLMT S CPRSTAT=$P(ND,U,12) D:CPRSTAT=5!(CPRSTAT=6)!(CPRSTAT=8)!(CPRSTAT=13)
 | 
|---|
| 7 |  .I STPCOD'="" S SRV=$P(ND,U,5) Q:'+SRV  I $D(^GMR(123.5,"AB1",STPCOD,SRV)) S PTIEN=$P(ND,U,2) D
 | 
|---|
| 8 |  ..I CPRSTAT=8 S SHOW=0 Q:$D(^SC("AWAS1",A))  S NOS=$O(^GMR(123,A,40,":"),-1) Q:'+NOS  S X2=$P($G(^GMR(123,A,40,NOS,0)),U),X1=DT D ^%DTC Q:X'=""&(X>180)  D SCHED(PTIEN,STPCOD,.SHOW) Q:'SHOW
 | 
|---|
| 9 |  ..;CPRSTAT 13 is a cancel
 | 
|---|
| 10 |  ..I CPRSTAT=13 S NOS=$O(^GMR(123,A,40,":"),-1) Q:'+NOS  S NOS=$O(^GMR(123,A,40,NOS),-1) Q:'+NOS  S X2=$P($G(^GMR(123,A,40,NOS,0)),U),X1=DT D ^%DTC Q:X'=""&(X>180)  S COMMENT=$G(^GMR(123,A,40,NOS,1,1,0)) Q:COMMENT'[NOSHOW
 | 
|---|
| 11 |  ..S:+PTIEN PTNM=$P(^DPT(PTIEN,0),U) S SERVICE=$P(^GMR(123.5,SRV,0),U),STATUS=$P(^ORD(100.01,CPRSTAT,0),U),SENDER=$P(ND,U,14) S:+SENDER SENDER=$P(^VA(200,SENDER,0),U)
 | 
|---|
| 12 |  ..S Y=DTENTR D DD^%DT S DTIN=Y,DTR=$E(DTENTR,4,5)_"/"_$E(DTENTR,6,7)_"/"_$E(DTENTR,2,3)_"@"_$P(Y,"@",2)
 | 
|---|
| 13 |  ..S CNT=CNT+1,TMP(CNT)=PTIEN_U_SERVICE_U_SENDER_U_STATUS_U_DTR_U_A_U_DTIN_U_$P(ND,U,17)_U_PROC
 | 
|---|
| 14 |  Q:'$D(TMP)
 | 
|---|
| 15 | QST N DIR,DTOUT,DUOUT,CNSULT
 | 
|---|
| 16 |  S DIR(0)="Y",DIR("A")="Will this appointment be for a CONSULT/PROCEDURE",DIR("B")="YES",DIR("?")="Answer 'Y'es if appointment is for a Consult or Procedure." W ! D ^DIR S CNSULT=Y
 | 
|---|
| 17 |  I CNSULT[U!(CNSULT=0)!(CNSULT="") K TMP Q
 | 
|---|
| 18 | HDR W !!,"Please select from the list of consult(s), press 0 for none.",!
 | 
|---|
| 19 |  W !,PTNM,!!,"#  Service",?27,"Sending Provider",?45,"Request Date",?60,"Cons #",?68,"Reqst Type",!,DSH
 | 
|---|
| 20 |  S A=0 F  S A=$O(TMP(A)) Q:'+A  S ND=TMP(A),P8=$P(ND,U,8) W !,A,". ",$S(P8="P":$E($P(ND,U,9),1,23),1:$E($P(ND,U,2),1,23)),?27,$E($P(ND,U,3),1,17),?45,$E($P(ND,U,5),1,14)," ",$P(ND,U,6) W ?68,$S(P8="P":"Procedure",P8="C":"Consult",1:"")
 | 
|---|
| 21 |  W !
 | 
|---|
| 22 | READ R !,"Select Consult: ",CONS:DTIME G:CONS="" A
 | 
|---|
| 23 |  I CONS=0!(CONS[U) W " ... NONE." K TMP Q
 | 
|---|
| 24 |  I "? "[CONS W !," Select consult by number on the left side." G READ
 | 
|---|
| 25 |  I '$D(TMP(CONS)) W *7," ?? Select consult by number on the left side." G READ
 | 
|---|
| 26 |  S CNSLTLNK=$P(TMP(CONS),U,6)
 | 
|---|
| 27 |  Q
 | 
|---|
| 28 | SCHED(PTIEN,STPCOD,SHOW) ;===CONSULT IS SCHEDULE NOW CHECK IF IT HAS APPOINTMENT BY STOP CODE.
 | 
|---|
| 29 |  N APT,CLNC,B,S1,S2,S3,S4,STOP,STOPCOD,X,Y
 | 
|---|
| 30 |  S %DT="ST",X="T-1" D ^%DT S APT=Y,S1=0,STOP=0 F  S APT=$O(^DPT(PTIEN,"S",APT)) Q:'+APT!(STOP)  S S1=1,CLNC=$P(^DPT(PTIEN,"S",APT,0),U) I CLNC'="" S STOPCOD=$P(^SC(CLNC,0),U,7) I STOPCOD'="" S S2=0 I STOPCOD=STPCOD S S2=1 D
 | 
|---|
| 31 |  .S S3=0,S4=0,B=0 F  S B=$O(^SC(CLNC,"S",APT,1,B)) Q:'+B!(STOP)  S S3=1 D
 | 
|---|
| 32 |  ..I ($P($G(^SC(CLNC,"S",APT,1,B,0)),U)=PTIEN) S S4=1,STOP=1,SHOW=0
 | 
|---|
| 33 |  I S1=0 S SHOW=1 Q  ;show if no appointment in the patient side
 | 
|---|
| 34 |  I S2=0 S SHOW=1 Q  ;show if stop code does not match
 | 
|---|
| 35 |  I S3=0 S SHOW=1 Q  ;show if no appointment in the clinic
 | 
|---|
| 36 |  I S4=0 S SHOW=1 Q  ;show if patient does not match in appointment
 | 
|---|
| 37 |  Q
 | 
|---|
| 38 | LINK(SC,SDY,SD,CNSLTLNK) ;===LINK APPOINTMENT TO CONSULT
 | 
|---|
| 39 |  N DA,DIE,DR,TDA,X
 | 
|---|
| 40 |  S TDA=SDY,DA(2)=SC,DA(1)=SD,DA=TDA,DIE="^SC("_DA(2)_",""S"","_DA(1)_",1,",DR="688////^S X=CNSLTLNK" D ^DIE
 | 
|---|
| 41 |  Q
 | 
|---|
| 42 | EDITCS(SD,TMPD,TMPYCLNC,CNSLTLNK) ;===MARK CONSULT AS SCHEDULED
 | 
|---|
| 43 |  N CSCHDT,SNDPRV,TME,X,Y,COMMENT,ER
 | 
|---|
| 44 |  S %DT="ST",X="NOW" D ^%DT S CSCHDT=Y
 | 
|---|
| 45 |  S SNDPRV=$P($G(^GMR(123,CNSLTLNK,0)),U,14),Y=SD D DD^%DT S TME=$P($P(Y,"@",2),":",1,2)
 | 
|---|
| 46 |  S COMMENT(1)=$P(TMPYCLNC,U,2)_" Consult Appt. on "_$E(SD,4,5)_"/"_$E(SD,6,7)_"/"_$E(SD,2,3)_" @ "_TME
 | 
|---|
| 47 |  S COMMENT(2)=TMPD
 | 
|---|
| 48 |  D SCH^SDQQCN2(.ER,CNSLTLNK,SNDPRV,CSCHDT,0,,.COMMENT) K COMMENT
 | 
|---|
| 49 |  Q
 | 
|---|
| 50 | CANCEL ;===appt was cancelled then mark consult as edit/resubmit, add comment.
 | 
|---|
| 51 |  N APPT,CONSULT,CPRSSTAT,ER,GM40,GMRND,SDPATNT,USER,SNDPRV,J
 | 
|---|
| 52 |  ;Variables CNDIE, CNDA and CNINDX used in calling routine for Cancel letter printed comment in consult.
 | 
|---|
| 53 |  S:$D(SCLNK) CONSULT=SCLNK
 | 
|---|
| 54 |  S:'$D(SCLNK) CONSULT=$P($G(^SC(SDSC,"S",SDTTM,1,SDPL,"CONS")),U)
 | 
|---|
| 55 |  Q:'+CONSULT
 | 
|---|
| 56 |  S:$D(SCSNOD) SDPATNT=$P(SCSNOD,U)
 | 
|---|
| 57 |  S:'$D(SCSNOD) SDPATNT=$P($G(^SC(SDSC,"S",SDTTM,1,SDPL,0)),U)
 | 
|---|
| 58 |  S CPRSSTAT=$P($G(^GMR(123,CONSULT,0)),U,12) I CPRSSTAT'="" S CPRSSTAT=$P($G(^ORD(100.01,CPRSSTAT,0)),U) Q:CPRSSTAT'="SCHEDULED"
 | 
|---|
| 59 |  S SNDPRV=$P($G(^GMR(123,CONSULT,0)),U,14)
 | 
|---|
| 60 |  S USER=$P(^VA(200,DUZ,0),U),Y=SDTTM D DD^%DT S APPT=$E(SDTTM,4,5)_"/"_$E(SDTTM,6,7)_"/"_$E(SDTTM,2,3)_" @ "_$P(Y,"@",2)
 | 
|---|
| 61 |  S COMMENT(1)=$P(^SC(SDSC,0),U)_" Appt. on "_APPT_" was cancelled"_$S($D(SDWH):$S(SDWH["P":" by the Patient.",SDWH["C":" by the Clinic.",1:"."),$D(SDADM):" for administrative purposes.",1:", whole clinic.")
 | 
|---|
| 62 |  S CNINDX=2 S:$D(TMPD) COMMENT(2)="Remarks: "_TMPD,CNINDX=CNINDX+1 K TMPD
 | 
|---|
| 63 |  N SDERR S SDERR=$$STATUS^GMRCGUIS(CONSULT,6,3,SNDPRV,"","",.COMMENT)
 | 
|---|
| 64 |  S CNDIE="^GMR(123,"_CONSULT_",40,",CNDA=+$G(COMMENT(0))
 | 
|---|
| 65 |  K COMMENT,DA
 | 
|---|
| 66 |  S AUTO(SDSC,SDTTM,SDPATNT)=CONSULT
 | 
|---|
| 67 |  S DA(2)=SDSC,DA(1)=SDTTM,DA=SDPL,DIE="^SC("_DA(2)_",""S"","_DA(1)_",1,",DR="688///@" D ^DIE
 | 
|---|
| 68 |  K SCSNOD,SDADM,SCLNK
 | 
|---|
| 69 |  Q
 | 
|---|
| 70 | AUTOREB(SC,NDATE,LNK,CY) ;===AUTO REBOOK
 | 
|---|
| 71 |  N DIC,DA,DIE,DR,Y,TME,SNDPRV,CSCHDT,COMMENT,ER
 | 
|---|
| 72 |  S DA(2)=SC,DA(1)=NDATE,DA=CY,DIE="^SC("_DA(2)_",""S"","_DA(1)_",1,",DR="688////^S X=LNK" D ^DIE
 | 
|---|
| 73 |  S Y=NDATE D DD^%DT S TME=$P(Y,"@",2)
 | 
|---|
| 74 |  S COMMENT(1)=$P(^SC(SC,0),U)_" Consult Appt. on "_$E(NDATE,4,5)_"/"_$E(NDATE,6,7)_"/"_$E(NDATE,2,3)_" @ "_TME_" (Auto Rebooked)."
 | 
|---|
| 75 |  S %DT="ST",X="NOW" D ^%DT S CSCHDT=Y
 | 
|---|
| 76 |  S SNDPRV=$P($G(^GMR(123,LNK,0)),U,14)
 | 
|---|
| 77 |  D SCH^SDQQCN2(.ER,LNK,SNDPRV,CSCHDT,0,,.COMMENT) K COMMENT
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 | NOSHOW(SC,SDDTM,CNPAT,CNSTLNK,CN,AUTO,NSDIE,NSDA) ;
 | 
|---|
| 80 |  ;Appt. was a NoShow, then mark Consult as Edit/Resubmit, add comment using silent call to notify user.
 | 
|---|
| 81 |  ;Variables NSDIE and NSDA used in calling routine for NoShow letter printed comment in consult.
 | 
|---|
| 82 |  N CSNOD,CPRSSTAT,NOSHOW,CSRQSRV,TPRNT,CSPRT,USER,Y,APPT,COMMENT,DA,DIC,DUZ2,DIC,DR,GM40,GMRND,ER,SNDPRV,J
 | 
|---|
| 83 |  S CSNOD=$G(^GMR(123,CNSTLNK,0)),CPRSSTAT=$P(CSNOD,U,12),SNDPRV=$P(CSNOD,U,14),NOSHOW="no-show",AUTO(SC,SDDTM,CNPAT)=CNSTLNK
 | 
|---|
| 84 |  I CPRSSTAT'="" S CPRSSTAT=$P($G(^ORD(100.01,CPRSSTAT,0)),U) Q:CPRSSTAT'="SCHEDULED"
 | 
|---|
| 85 |  S CSRQSRV=$P(CSNOD,U,5) I CSRQSRV'="" S TPRNT=$P($G(^GMR(123.5,CSRQSRV,123)),U,9) I TPRNT'="" S:$P($G(^%ZIS(1,TPRNT,0)),U)'="" CSPRT=$P(^(0),U) ;reprint consult
 | 
|---|
| 86 |  S USER=$P(^VA(200,DUZ,0),U),Y=SDDTM D DD^%DT S APPT=$E(SDDTM,4,5)_"/"_$E(SDDTM,6,7)_"/"_$E(SDDTM,2,3)_" @ "_$P(Y,"@",2)
 | 
|---|
| 87 |  S COMMENT(1)=$P(^SC(SC,0),U)_" Appt. on "_APPT_" was a "_NOSHOW_"." ;no-show is a key word used by a search do not change
 | 
|---|
| 88 |  N SDERR S SDERR=$$STATUS^GMRCGUIS(CNSTLNK,6,3,SNDPRV,"","",.COMMENT)
 | 
|---|
| 89 |  S NSDIE="^GMR(123,"_CNSTLNK_",40,",NSDA=+$G(COMMENT(0))
 | 
|---|
| 90 |  K COMMENT,DA
 | 
|---|
| 91 |  S DA(2)=SC,DA(1)=SDDTM,DA=CN,DIE="^SC("_DA(2)_",""S"","_DA(1)_",1,",DR="688///@" D ^DIE
 | 
|---|
| 92 |  I $D(CSPRT) D EN^GMRCP5(CNSTLNK,"C",CSPRT)
 | 
|---|
| 93 |  K CNSTLNK Q
 | 
|---|