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

SDM2A.m

Go to the documentation of this file.
  1. SDM2A ;ALB/OG - MAKE APPOINTMENT - overflow routine ;24 Jun 2008 11:57 AM
  1. ;;5.3;PIMS;**446,528,1015,1016**;JUN 30, 2012;Build 20
  1. WL(SC) ;Wait List Hook/teh patch 263 ;SD/327 passed 'SC'
  1. N DA,DIE,DR,SBEG,SCSR,SDDIV,SDINST,SDPAR,SDWLDA,SDWLDFN,SDWLSCL
  1. Q:$G(SC)'>0
  1. I '$D(^SC(SC)) Q
  1. S SDINST=""
  1. ;S SDINST=$$GET1^DIQ(44,SC_",",3,"I") ; get Inst BEFORE
  1. S SDDIV=$$GET1^DIQ(44,SC_",",3.5,"I") S:SDDIV'="" SDINST=$$GET1^DIQ(40.8,SDDIV_",",.07,"I")
  1. I SDINST="" D Q ; sd/446
  1. .N DIR
  1. .D MESS2^SDWL120(SC)
  1. .W !,"No Institution/Division is associated with this Clinic."
  1. .W !,"Unable to create a Wait List Entry. Abandoning request."
  1. .W !!,"A message is being sent to the administrators mail group"
  1. .W !,"alerting them to the situation."
  1. .S DIR(0)="E" D ^DIR
  1. .Q
  1. S SDPAR=0
  1. ;create 409.32 entry
  1. I $D(^SDWL(409.32,"B",SC)) S SDWLSCL=$O(^SDWL(409.32,"B",SC,""))
  1. E D
  1. .N DA,DIC,X,DIE,DR
  1. .S DIC(0)="LX",X=SC,DIC="^SDWL(409.32," D FILE^DICN
  1. .S SDWLSCL=DA
  1. .S DIE="^SDWL(409.32,"
  1. .S DR=".02////^S X=SDINST" D ^DIE
  1. .S DR="1////^S X=DT"
  1. .S DR=DR_";2////^S X=DUZ"
  1. .D ^DIE S SDPAR=1 ; flag indicating clinic parameter entry
  1. .; CREATE 409.3 with 120 flag
  1. S DIC(0)="LX",(X,SDWLDFN)=DFN,DIC="^SDWL(409.3," D FILE^DICN
  1. ; File just created so lock should never fail.
  1. F L +^SDWL(409.3,DA):5 Q:$T W !,"Unable to acquire a lock on the Wait List file" Q
  1. ; Update EWL variables.
  1. S SDWLDA=DA D EN^SDWLE11 ; get enrollee both SDWLDA and SDWLDFN have to be defined
  1. S DIE="^SDWL(409.3,"
  1. S DR="1////^S X=DT"
  1. S DR=DR_";2////^S X=SDINST"
  1. S DR=DR_";4////^S X=4"
  1. S DR=DR_";8////^S X=SDWLSCL"
  1. S DR=DR_";9////^S X=DUZ"
  1. S DR=DR_";10////^S X=""A"""
  1. S DR=DR_";11////^S X=2" ; by patient for this entry to avoid asking for provider
  1. S DR=DR_";14////^S X="""_$S($P($G(^DPT(SDWLDFN,.3)),U,1)="Y":$P(^DPT(SDWLDFN,.3),U,2),1:"")_""""
  1. S DR=DR_";15////^S X="_$S($P($G(^DPT(SDWLDFN,.3)),U,1)="Y":1,1:0)
  1. S DR=DR_";22////^S X=SDDATE"
  1. S DR=DR_";23////^S X=""O"""
  1. S DR=DR_";25////^S X="" > 120 days"""
  1. S DR=DR_";36////^S X=1"
  1. D ^DIE
  1. L -^SDWL(409.3,DA)
  1. S SDWLFLG=0 D MESS^SDWL120(SDWLDFN,SDWLDA,SDPAR)
  1. Q
  1. ;
  1. WLCL120(SC,DESDT) ; Is there clinic availability within 120 days of desired date ; sd/446
  1. N SBEG,SD120
  1. Q:$$GET1^DIQ(44,SC,2502,"I")="Y" 1 ; Non-count clinic. Allow > 120 days.
  1. S SD120=0,SBEG=DESDT-1 ;SD*567 added Go next line
  1. F S SBEG=$O(^SC(SC,"ST",SBEG)) Q:SBEG="" G:'$D(^(1)) WL1 I $$HASAVSL(^SC(SC,"ST",SBEG,1)) D Q
  1. .N X,DESDTH
  1. .S X=SBEG D H^%DTC S SBEG=%H
  1. .S X=DESDT D H^%DTC S DESDTH=%H
  1. .S SD120=(SBEG-DESDTH>120)
  1. .Q
  1. Q 'SD120
  1. ;
  1. WL1 ; SD*567 check for bad record and delete if applicable
  1. I '$D(^SC(SC,"ST",SBEG,1)) I $D(^(9)) D DELETE
  1. Q 'SD120
  1. ;
  1. DELETE ; SD*567 delete bad record
  1. S DA=SBEG,DA(1)=SC
  1. S DIK="^SC("_DA(1)_",""ST"","
  1. D ^DIK
  1. K DA,DIK
  1. Q
  1. ;
  1. WLCL120A(SDWLAPDT,SDDATE1,SC) ;
  1. N %DT,DIR,X,X1,X2,Y
  1. Q:$$GET1^DIQ(44,SC,2502,"I")="Y" 1 ; Non-count clinic. Allow > 120 days.
  1. S X=SDWLAPDT,%DT="TXF" D ^%DT
  1. Q:Y=-1 1
  1. S X1=Y,X2=SDDATE1 D ^%DTC
  1. I X'>120 Q 1
  1. S DIR(0)="Y",DIR("B")="YES"
  1. S DIR("A")="Add to EWL",DIR("A",1)="The date is more than 120 days beyond the Desired Date"
  1. W ! D ^DIR
  1. I Y=1 D WL(SC)
  1. Q 0
  1. ;
  1. WLCLASK() ; No appointment availability warning. ; sd/446
  1. N DIR
  1. S DIR(0)="Y"
  1. S DIR("A",1)="No appointments are available within 120 days of the Desired Date."
  1. S DIR("A",2)="Do you want to place this patient on the Electronic Wait List"
  1. S DIR("A",3)="or change the desired date?"
  1. S DIR("A",4)=""
  1. S DIR("A",5)="Enter ""Y"" to place on EWL, ""N"" to go back"
  1. S DIR("A")="or ""^"" to return to the CLINIC: prompt. "
  1. W ! D ^DIR
  1. Q Y
  1. ;
  1. HASAVSL(SCSR) ; Has available slots ; sd/446
  1. ; Look at CLINIC PATTERN CURRENT AVAILABILITY string (44.005/1)
  1. ; If there is 1-9,j-z within the [ ... ], there is availability for that day.
  1. N DIC,F,SDOK,X,Y
  1. ; Allow whatever if user has a key to overbook.
  1. S DIC="^VA(200,"_DUZ_",51,",X="SDOB" D ^DIC Q:Y'=-1 1
  1. S X="SDMOB" D ^DIC Q:Y'=-1 1
  1. Q:SCSR'["[" 0 ; No slots.
  1. S SCSR=$TR($E(SCSR,$F(SCSR,"[")-1,$L(SCSR))," |"),(SDOK,F)=0
  1. F S F=$F(SCSR,"[",F) Q:'F D Q:SDOK
  1. .N I,SCSR0,SL
  1. .S SCSR0=$E(SCSR,F,$F(SCSR,"]",F)-2)
  1. .F I=1:1:$L(SCSR0) S SL=$E(SCSR0,I) I $A(SL)>105&($A(SL)<123)!SL S SDOK=1 Q ; If SL=1-9,j-z slots are available
  1. .Q
  1. Q SDOK