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

SDESCLINICSET.m

Go to the documentation of this file.
  1. SDESCLINICSET ;ALB/TAW,MGD,BWF,LAB,MGD,ANU,DJS - CLINIC CREATE AND UPDATE ;OCT 24, 2023
  1. ;;5.3;Scheduling;**799,805,820,824,825,831,835,836,857,860,864**;Aug 13, 1993;Build 15
  1. ;;Per VHA Directive 6402, this routine should not be modified
  1. ;
  1. ; Reference to ^DG(40.8 is supported by IA #2295
  1. ; Reference to ^DG(40.8 is supported by IA #7024
  1. ;
  1. ; SDNAME - [TEXT, REQ] Clinic Name
  1. ; SDABR - [TEXT] ABBREVIATION
  1. ; SDPATNAME - [TEXT] PATIENT FRIENDLY NAME
  1. ; SDMEETATFAC - [Y/N] CLINIC MEETS AT THIS FACILITY? (Default = Y)
  1. ; SDPATSCHED - [Y/N, REQ] ALLOW DIRECT PATIENT SCHEDULING?
  1. ; SDDISPAPPT - [Y/N, REQ] DISPLAY CLIN APPT TO PATIENTS?
  1. ; SDSERVICE - [Set of codes, REQ] SERVICE
  1. ; SDNONCOUNT - [Y/N, REQ] NON-COUNT CLINIC? (Y OR N)
  1. ; SDDIVSION - [File 40.8] DIVISION
  1. ; SDSTOPCODE - [File 40.7, REQ] STOP CODE NUMBER
  1. ; SDAPPTTYP - [File 409.1] DEFAULT APPOINTMENT TYPE
  1. ; SDINPATMED - [Y/N] ADMINISTER INPATIENT MEDS?
  1. ; SDPHONE - [TEXT] TELEPHONE
  1. ; SDREQXRAY - [Y/N] REQUIRE X-RAY FILMS?
  1. ; SDREQPROFILE - [Y/N] REQUIRE ACTION PROFILES?
  1. ; SDNOSHOWLET - [File 407.5] NO SHOW LETTER
  1. ; SDPREAPTLET - [File 407.5] PRE-APPOINTMENT LETTER
  1. ; SDCANLET - [File 407.5] CLINIC CANCELLATION LETTER
  1. ; SDAPTCANLET - [File 407.5] APPT. CANCELLATION LETTER
  1. ; SDINOUTTIME - [Y/N] ASK FOR CHECK IN/OUT TIME
  1. ; SDPROVIDER - [File 200] PROVIDER
  1. ; SDPRACTIONER - [Y/N] DEFAULT TO PC PRACTITIONER?
  1. ; SDDIAG - [file 80] DIAGNOSIS
  1. ; SDWORKLOAD - [Y/N] WORKLOAD VALIDATION AT CHK OUT
  1. ; SDALLOWNOSHW - [NUM, REQ] ALLOWABLE CONSECUTIVE NO-SHOWS
  1. ; SDMACFUTBOOK - [NUM, REQ] MAX # DAYS FOR FUTURE BOOKING
  1. ; SDSCHEDHOLIDAY - [Y/N] SCHEDULE ON HOLIDAYS?
  1. ; SDCREDITSTOP - [File 40.7] CREDIT STOP CODE
  1. ; SDNOACCESS - [Y/N] PROHIBIT ACCESS TO CLINIC?
  1. ; SDLOCATION - [TEXT] PHYSICAL LOCATION
  1. ; SDPRINCLINIC - [File 44] PRINCIPAL Clinic
  1. ; SDOVBDAYMAX - [NUM, REQ] OVERBOOKS/DAY MAXIMUM
  1. ; SDSPECINSTRU - [TEXT] SPECIAL INSTRUCTIONS
  1. ; SDECHECKIN - [Y/N] E-CHECKIN ALLOWED
  1. ; SDPRECJECKIN - [Y/N] PRE-CHECKIN ALLOWED NO
  1. ; SDLENGTHOFAPT - [NUM, REQ] LENGTH OF APP'T
  1. ; SDVARAPTLNG - [TEXT] VARIABLE APP'NTMENT LENGTH
  1. ; SDINCPERHR - [NUM, REQ] DISPLAY INCRUMENTS PER HOUR
  1. ; SDSTARTHR - [NUM] HOUR CLINIC DISPLAY BEGINS (Default = 8)
  1. ; SDEAS - [TEXT OPT] Enterprise Appointment Scheduling (EAS) Tracking Number associated to an appointment.
  1. ; HASH - [TEXT] SHA-1 Hash value that the calling app has stored
  1. ; PRIAMIS - [NUM, OPT] AMIS Primary Stop Code
  1. ; CREDITAMIS - [NUM, OPT] AMIS Credit Stop Code
  1. ;
  1. CLINICEDIT(RET,CLINIEN,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P20,P21,P22,P23,P24,P25,P26,P27,P28,P29,P30,P31,P32,P33,P34,P35,P36,P37,P38,P39,P40,P41,P42,P43,P44) ;
  1. S CLINIEN=$G(CLINIEN,"")
  1. S:CLINIEN="" CLINIEN=-1 ;Flag missing ARIEN when calling the update RPC
  1. S P1=$G(P1),P2=$G(P2),P3=$G(P3),P4=$G(P4),P5=$G(P5),P6=$G(P6),P7=$G(P7),P8=$G(P8),P9=$G(P9),P10=$G(P10),P11=$G(P11),P12=$G(P12),P13=$G(P13),P14=$G(P14),P15=$G(P15),P16=$G(P16),P17=$G(P17)
  1. S P18=$G(P18),P19=$G(P19),P20=$G(P20),P21=$G(P21),P22=$G(P22),P23=$G(P23)
  1. S P24=$G(P24),P25=$G(P25),P26=$G(P26),P27=$G(P27),P28=$G(P28),P29=$G(P29),P30=$G(P30),P31=$G(P31),P32=$G(P32),P33=$G(P33),P34=$G(P34),P35=$G(P35),P36=$G(P36),P37=$G(P37),P38=$G(P38),P39=$G(P39),P40=$G(P40)
  1. S P41=$G(P41),P42=$G(P42),P43=$G(P43),P44=$G(P44)
  1. D CLINICSET^SDESCLINICSET(.RET,CLINIEN,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P20,P21,P22,P23,P24,P25,P26,P27,P28,P29,P30,P31,P32,P33,P34,P35,P36,P37,P38,P39,P40,P41,P42,P43,P44)
  1. Q
  1. ;
  1. CLINICSET(RETURN,P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P20,P21,P22,P23,P24,P25,P26,P27,P28,P29,P30,P31,P32,P33,P34,P35,P36,P37,P38,P39,P40,P41,P42,P43,P44) ;
  1. N SDCLINIC,SDNAME,SDABR,SDPATNAME,SDMEETATFAC,SDPATSCHED,SDDISPAPPT,SDSERVICE,SDNONCOUNT,SDDIVSION,SDSTOPCODE,SDAPPTTYP,SDIEN
  1. N SDINPATMED,SDPHONE,SDREQXRAY,SDREQPROFILE,SDNOSHOWLET,SDPREAPTLET,SDCANLET,SDAPTCANLET,SDINOUTTIME,SDPROVIDER,SDPRACTIONER
  1. N SDDIAG,SDWORKLOAD,SDALLOWNOSHW,SDMAXFUTBOOK,SDSTTMAUTOBOOK,SDMAXDAYREBOOK,SDSCHEDHOLIDAY,SDCREDITSTOP,SDNOACCESS,SDFHRCLINBEGIN
  1. N SDLOCATION,SDPRINCLINIC,SDOVBDAYMAX,SDSPECINSTRU,SDECHECKIN,SDPRECHECKIN,SDLENGTHOFAPT,SDVARAPTLNG,POP,SDINCPERHR,DEFAULTNEW
  1. N I,PROV,PROVIDER,DIAG,DIAGNOSIS,INSTRUCTION,SPECIALINSTRUCT,PROVDATA,DEFAULT,KEY,DIAGDATA,DEFAULT,DEFAULTCNT,DEFAULTFLAG,ACTION
  1. N DEFAULTCNT2,DEFALUTREMOVE,X,PRIVUSER,PRIVLIAGEDUSER,MI,SDSTARTHR,ERR,FDA,SDEAS,PRIAMIS,CREDITAMIS,SDPHONEEXT,SDINACTIVEDATE
  1. S POP=0
  1. I P0="" D
  1. .D VALIDATE(0)
  1. .I 'POP D CREATE
  1. I P0'="" D
  1. .D VALIDATE(1)
  1. .I 'POP D UPDATE
  1. .D:('POP)&($G(P41)'="") CHECKHASH(.SDERROR,P0,P41)
  1. I 'POP D SAVE^SDESCLINICSET2(.POP,SDIEN,.FDA,.SDCLINIC,.PROVIDER,.DIAGNOSIS,.SPECIALINSTRUCT,.PRIVLIAGEDUSER)
  1. D BUILDER
  1. Q
  1. ;
  1. CHECKHASH(SDERROR,CLIN,INPUTHASH) ;
  1. N CURHASH
  1. S CURHASH=$$GET1^DIQ(44,CLIN,2900,"I")
  1. D:CURHASH'=INPUTHASH ERRLOG(252)
  1. Q
  1. ;
  1. VALIDATE(EDIT) ;
  1. S SDIEN=$G(P0)
  1. I SDIEN'="" D
  1. .; If the Update RPC is called and no SDIEN is sent then it will show as -1
  1. .I SDIEN=-1 D ERRLOG(18) Q
  1. .I '$D(^SC(SDIEN,0)) D ERRLOG(19)
  1. ;
  1. S SDNAME=$G(P1)
  1. I SDNAME="@" S SDNAME="" ;Can't remove the name
  1. I 'EDIT,SDNAME="" D ERRLOG(50)
  1. I SDNAME'="",$D(^SC("B",$E(SDNAME,1,30))) D ERRLOG(51,"Name already in use")
  1. ;
  1. S SDABR=$G(P2)
  1. I $L(SDABR)>7 D ERRLOG(251)
  1. ;
  1. S SDPATNAME=$G(P3)
  1. ;
  1. S SDMEETATFAC=$G(P4)
  1. I 'EDIT,SDMEETATFAC="" S SDMEETATFAC="Y" ;Default to Y
  1. I '$$CHECKYN(SDMEETATFAC) D ERRLOG(87)
  1. ;
  1. S SDPATSCHED=$G(P5)
  1. I SDPATSCHED="@" S SDPATSCHED="" ;Can't remove a required field
  1. I 'EDIT,SDPATSCHED="" D ERRLOG(88)
  1. I '$$CHECKYN(SDPATSCHED) D ERRLOG(89)
  1. ;
  1. S SDDISPAPPT=$G(P6)
  1. I SDDISPAPPT="@" S SDDISPAPPT="" ;Can't remove a required field
  1. I 'EDIT,SDDISPAPPT="" D ERRLOG(90)
  1. I '$$CHECKYN(SDDISPAPPT) D ERRLOG(91)
  1. ;
  1. S SDSERVICE=$G(P7)
  1. I SDSERVICE="@" S SDSERVICE="" ;Can't remove a required field
  1. I 'EDIT,SDSERVICE="" D ERRLOG(92)
  1. S SDSERVICE=$E(SDSERVICE)
  1. S:SDSERVICE="N" SDSERVICE=0
  1. I SDSERVICE'="@",SDSERVICE'="",'$F("^M^S^P^R^N^0^","^"_SDSERVICE_"^") D ERRLOG(93)
  1. ;
  1. S SDNONCOUNT=$G(P8)
  1. I SDNONCOUNT="@" S SDNONCOUNT="" ;Can't remove a required field
  1. I 'EDIT,SDNONCOUNT="" D ERRLOG(94)
  1. I '$$CHECKYN(SDNONCOUNT) D ERRLOG(95)
  1. ;
  1. S SDDIVSION=$G(P9)
  1. I 'EDIT,SDDIVSION="" S SDDIVSION=$$GET1^DIQ(40.8,"1,",.01,"I") ;Default
  1. I SDDIVSION'="",SDDIVSION'="@" D
  1. .I +SDDIVSION,$D(^DG(40.8,SDDIVSION,0)) Q
  1. .S SDDIVSION=$O(^DG(40.8,"B",$E(SDDIVSION,1,30),""),-1)
  1. .I 'SDDIVSION D ERRLOG(97)
  1. ;
  1. S SDSTOPCODE=$G(P10)
  1. I SDSTOPCODE="@" S SDSTOPCODE="" ;Can't remove a required field
  1. I SDSTOPCODE'="",SDSTOPCODE'="@" D
  1. .I +SDSTOPCODE=234 S POP=1 D ERRLOG(273)
  1. .I +SDSTOPCODE,$$RESCHKFAILED^SDESUTIL(SDSTOPCODE,"P") D ERRLOG(290)
  1. .; 860
  1. .S SDINACTIVEDATE=$$GET1^DIQ(40.7,SDSTOPCODE,2,"I")
  1. .I $G(SDINACTIVEDATE)'="",$G(SDINACTIVEDATE)<DT D ERRLOG(531) ;864
  1. .I +SDSTOPCODE,$D(^DIC(40.7,SDSTOPCODE,0)) Q
  1. .S SDSTOPCODE=$O(^DIC(40.7,"B",$E(SDSTOPCODE,1,30),""),-1)
  1. .I 'SDSTOPCODE D ERRLOG(99)
  1. ;
  1. S SDAPPTTYP=$G(P11)
  1. I 'EDIT,SDAPPTTYP="" S SDAPPTTYP="REGULAR"
  1. I SDAPPTTYP'="",SDAPPTTYP'="@" D
  1. .I +SDAPPTTYP,$D(^SD(409.1,SDAPPTTYP,0)) Q
  1. .S SDAPPTTYP=$O(^SD(409.1,"B",$E(SDAPPTTYP,1,30),""),-1)
  1. .I 'SDAPPTTYP D ERRLOG(83)
  1. ;
  1. S SDINPATMED=$G(P12)
  1. I 'EDIT,SDINPATMED'="Y" S SDINPATMED="" ;Default
  1. I '$$CHECKYN(SDINPATMED) D ERRLOG(122)
  1. I SDINPATMED'="@",SDINPATMED'="Y" S SDINPATMED=""
  1. I EDIT,SDINPATMED="" S SDINPATMED="@"
  1. S SDINPATMED=$$YNTOBOOL^SDESCLINICSET2(SDINPATMED)
  1. ;
  1. S SDPHONE=$G(P13)
  1. S SDPHONEEXT=$G(P44)
  1. I SDPHONEEXT'="" D
  1. . I $L(SDPHONEEXT)>26 D ERRLOG(424)
  1. ;
  1. S SDREQXRAY=$G(P14)
  1. I 'EDIT,SDREQXRAY'="Y" S SDREQXRAY="" ;Default
  1. I '$$CHECKYN(SDREQXRAY) D ERRLOG(123)
  1. I SDREQXRAY'="@",SDREQXRAY'="Y" S SDREQXRAY=""
  1. I EDIT,SDREQXRAY="" S SDREQXRAY="@"
  1. ;
  1. S SDREQPROFILE=$G(P15)
  1. I 'EDIT,SDREQPROFILE="" S SDREQPROFILE="Y" ;Default
  1. I '$$CHECKYN(SDREQPROFILE) D ERRLOG(100)
  1. S SDREQPROFILE=$$YNTOBOOL^SDESCLINICSET2(SDREQPROFILE)
  1. I SDREQPROFILE?1N S SDREQPROFILE='SDREQPROFILE ;Because this field is defined oddly where 1=No and 0=Yes
  1. ;
  1. S SDNOSHOWLET=$G(P16)
  1. S SDNOSHOWLET=$$LETTERIEN^SDESCLINICSET2(SDNOSHOWLET,"No show")
  1. ;
  1. S SDPREAPTLET=$G(P17)
  1. S SDPREAPTLET=$$LETTERIEN^SDESCLINICSET2(SDPREAPTLET,"Pre appointment")
  1. ;
  1. S SDCANLET=$G(P18)
  1. S SDCANLET=$$LETTERIEN^SDESCLINICSET2(SDCANLET,"Clinic cancellation")
  1. ;
  1. S SDAPTCANLET=$G(P19)
  1. S SDAPTCANLET=$$LETTERIEN^SDESCLINICSET2(SDAPTCANLET,"Appointment cancellation")
  1. ;
  1. S SDINOUTTIME=$G(P20)
  1. I '$$CHECKYN(SDINOUTTIME) D ERRLOG(101)
  1. S SDINOUTTIME=$$YNTOBOOL^SDESCLINICSET2(SDINOUTTIME)
  1. ;
  1. ; Provider IEN or # | Action
  1. ;
  1. ; Action = @ means remove this provider
  1. ; Action = D means set this provider as the default
  1. ; Action = @D means remove the default flag from the provider
  1. ;
  1. ; Remove default flag ; Delete provider ; Add or update provider and set as default ; Add provider
  1. ; Provider|@D ; Provider|@ ; Provider|D ; Provider
  1. ;
  1. ; EX: SMITH,JANE|@D;JAMES,JIM|;MACEY,MARY|@;ROBERTS,TIM
  1. ;
  1. S SDPROVIDER=$G(P21)
  1. D:SDPROVIDER'="" VALIDATEPROV^SDESCLINICSET2(SDPROVIDER,.PROVIDER,SDIEN)
  1. ;
  1. S SDPRACTIONER=$G(P22)
  1. I '$$CHECKYN(SDPRACTIONER) D ERRLOG(102)
  1. S SDPRACTIONER=$$YNTOBOOL^SDESCLINICSET2(SDPRACTIONER)
  1. ;
  1. ; Diagnosis IEN or # | Action
  1. ;
  1. ; Action = @ means remove this diagnosis
  1. ; Action = D means set this diagnosis as the default
  1. ; Action = @D means remove the default flag from the diagnosis
  1. ;
  1. ; Remove default flag ; Delete Diagnosis ; Add or update Diagnosis and set as default ; Add diagnosis
  1. ; Diagnosis|@D ; Diagnosis|@ ; Diagnosis|D ; Diagnosis
  1. ;
  1. S SDDIAG=$G(P23)
  1. D:SDDIAG'="" VALIDATEDIAG^SDESCLINICSET2(SDDIAG,.DIAGNOSIS,SDIEN)
  1. ;
  1. S SDWORKLOAD=$G(P24)
  1. I '$$CHECKYN(SDWORKLOAD) D ERRLOG(103)
  1. S SDWORKLOAD=$$YNTOBOOL^SDESCLINICSET2(SDWORKLOAD)
  1. ;
  1. S SDALLOWNOSHW=$G(P25)
  1. I SDALLOWNOSHW="@" S SDALLOWNOSHW="" ;Can't remove a required field
  1. I 'EDIT,SDALLOWNOSHW="" D ERRLOG(104)
  1. I SDALLOWNOSHW'="" D
  1. .S SDALLOWNOSHW=SDALLOWNOSHW\1
  1. .I SDALLOWNOSHW>999 D ERRLOG(105)
  1. ;
  1. S SDMAXFUTBOOK=$G(P26)
  1. I SDMAXFUTBOOK="@" S SDMAXFUTBOOK="" ;Can't remove a required field
  1. I 'EDIT,SDMAXFUTBOOK="" D ERRLOG(106)
  1. I SDMAXFUTBOOK'="" D
  1. .S SDMAXFUTBOOK=SDMAXFUTBOOK\1
  1. .I SDMAXFUTBOOK>999!(+SDMAXFUTBOOK<11) D ERRLOG(107)
  1. ;
  1. S SDSCHEDHOLIDAY=$G(P27)
  1. ; SD*835 - block editing of 'Schedule on Holidays' field
  1. I 'EDIT,SDSCHEDHOLIDAY'="Y" S SDSCHEDHOLIDAY=""
  1. I EDIT,SDSCHEDHOLIDAY'=$$GET1^DIQ(44,SDIEN,1918.5,"I") D ERRLOG(405)
  1. ;
  1. S SDCREDITSTOP=$G(P28)
  1. I SDCREDITSTOP'="",SDCREDITSTOP'="@" D
  1. .I +SDCREDITSTOP=234 S POP=1 D ERRLOG(273)
  1. .I +SDCREDITSTOP,$$RESCHKFAILED^SDESUTIL(SDCREDITSTOP,"S") D ERRLOG(291)
  1. .; 860
  1. .S SDINACTIVEDATE=$$GET1^DIQ(40.7,SDCREDITSTOP,2,"I")
  1. .I $G(SDINACTIVEDATE)'="",$G(SDINACTIVEDATE)<DT D ERRLOG(532) ;864
  1. .I +SDCREDITSTOP,$D(^DIC(40.7,SDCREDITSTOP,0)) Q
  1. .S SDCREDITSTOP=$O(^DIC(40.7,"B",$E(SDCREDITSTOP,1,30),""),-1)
  1. .I 'SDCREDITSTOP D ERRLOG(109)
  1. ;
  1. ;When setting the clinic as Prohibit Access, a list of privileged users can be passed in.
  1. ;
  1. ; ex: Y;DOE,JANE;SMITH,JOHN|@
  1. S SDNOACCESS=$G(P29)
  1. D:SDNOACCESS'="" VALIDATEPPRIVUSR^SDESCLINICSET2(.SDNOACCESS,.PRIVLIAGEDUSER)
  1. ;
  1. S SDLOCATION=$G(P30)
  1. ;
  1. S SDPRINCLINIC=$G(P31)
  1. I SDPRINCLINIC'="@",SDPRINCLINIC'="" D
  1. .I +SDPRINCLINIC,$D(^SC(SDPRINCLINIC,0)) Q
  1. .S SDPRINCLINIC=$O(^SC("B",$E(SDPRINCLINIC,1,30),""),-1)
  1. .I SDPRINCLINIC="" D ERRLOG(110)
  1. ;
  1. S SDOVBDAYMAX=$G(P32)
  1. I SDOVBDAYMAX="@" S SDOVBDAYMAX="" ;Can't remove a required field
  1. I 'EDIT,SDOVBDAYMAX="" D ERRLOG(111)
  1. I SDOVBDAYMAX'="" D
  1. .S SDOVBDAYMAX=SDOVBDAYMAX\1
  1. .I SDOVBDAYMAX>9999 D ERRLOG(112)
  1. ;
  1. ;Delimited list of free test (MAX 80 chars) per delimited piece.
  1. ;ex: Instruction 1;Instruction 2
  1. S SDSPECINSTRU=$G(P33)
  1. D:SDSPECINSTRU'="" VALIDATESI^SDESCLINICSET2(SDSPECINSTRU,.SPECIALINSTRUCT)
  1. ;
  1. S SDECHECKIN=$G(P34)
  1. I 'EDIT,SDECHECKIN="" S SDECHECKIN="N" ;default
  1. I '$$CHECKYN(SDECHECKIN) D ERRLOG(113)
  1. S SDECHECKIN=$$YNTOBOOL^SDESCLINICSET2(SDECHECKIN)
  1. ;
  1. S SDPRECHECKIN=$G(P35)
  1. I 'EDIT,SDPRECHECKIN="" S SDPRECHECKIN="N" ;default
  1. I '$$CHECKYN(SDPRECHECKIN) D ERRLOG(114)
  1. S SDPRECHECKIN=$$YNTOBOOL^SDESCLINICSET2(SDPRECHECKIN)
  1. ;
  1. S SDLENGTHOFAPT=$G(P36)
  1. I EDIT D
  1. .I SDLENGTHOFAPT="" Q
  1. .I SDLENGTHOFAPT="@" D ERRLOG(115) Q
  1. .S SDLENGTHOFAPT=SDLENGTHOFAPT\1
  1. .I SDLENGTHOFAPT<10!(SDLENGTHOFAPT>240) D ERRLOG(116)
  1. I 'EDIT D
  1. .I SDLENGTHOFAPT="@" S SDLENGTHOFAPT="" ;Can't remove a required field
  1. .I SDLENGTHOFAPT="" D ERRLOG(115) Q
  1. .S SDLENGTHOFAPT=SDLENGTHOFAPT\1
  1. .I SDLENGTHOFAPT<10!(SDLENGTHOFAPT>240) D ERRLOG(116)
  1. ;
  1. S SDVARAPTLNG=$G(P37)
  1. I SDVARAPTLNG="Y" S SDVARAPTLNG="V"
  1. E S:SDVARAPTLNG'="@" SDVARAPTLNG=""
  1. I EDIT,SDVARAPTLNG="" S SDVARAPTLNG="@"
  1. ;
  1. S SDINCPERHR=$G(P38)
  1. I 'EDIT D
  1. .I SDINCPERHR="@" S SDINCPERHR="" ;Can't remove a required field
  1. .I SDINCPERHR="" D ERRLOG(117) Q
  1. .S ERR='$F("^60^30^20^15^10^","^"_SDINCPERHR_"^")
  1. .I ERR S POP=1 D ERRLOG(118) Q
  1. .S SDINCPERHR=60\SDINCPERHR
  1. ;
  1. S SDSTARTHR=$G(P39)
  1. I 'EDIT D
  1. .I SDSTARTHR="" S SDSTARTHR=8 Q
  1. .I SDSTARTHR'?1.2N D ERRLOG(119) Q
  1. .S SDSTARTHR=+SDSTARTHR
  1. .I SDSTARTHR<0!(SDSTARTHR>16) D ERRLOG(119)
  1. ;
  1. S SDEAS=$G(P40)
  1. I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS)
  1. I SDEAS=-1 S POP=1 D ERRLOG(142)
  1. ;
  1. I $L($G(P41))>120 S POP=1 D ERRLOG(253)
  1. ;
  1. S PRIAMIS=$G(P42)
  1. I PRIAMIS="@" S PRIAMIS=""
  1. I PRIAMIS="",'EDIT,+SDSTOPCODE=0 D ERRLOG(272)
  1. I PRIAMIS'="" D
  1. . N PRIAMISNOTVALID
  1. . S PRIAMISNOTVALID=$$VALIDATEAMIS^SDESUTIL(.PRIAMIS,"P")
  1. . I PRIAMISNOTVALID S POP=1 D ERRLOG(PRIAMISNOTVALID) Q
  1. . S SDSTOPCODE=PRIAMIS
  1. .; 860
  1. .S SDINACTIVEDATE=$$GET1^DIQ(40.7,PRIAMIS,2,"I")
  1. .I $G(SDINACTIVEDATE)'="",$G(SDINACTIVEDATE)<DT D ERRLOG(512) ;864
  1. ;
  1. S CREDITAMIS=$G(P43)
  1. I CREDITAMIS="@" S SDCREDITSTOP=CREDITAMIS
  1. I CREDITAMIS'="",(CREDITAMIS'="@") D
  1. . N SECAMISNOTVALID
  1. . S SECAMISNOTVALID=$$VALIDATEAMIS^SDESUTIL(.CREDITAMIS,"C")
  1. . I SECAMISNOTVALID S POP=1 D ERRLOG(SECAMISNOTVALID) Q
  1. . S SDCREDITSTOP=CREDITAMIS
  1. .;860
  1. .S SDINACTIVEDATE=$$GET1^DIQ(40.7,CREDITAMIS,2,"I")
  1. .I $G(SDINACTIVEDATE)'="",$G(SDINACTIVEDATE)<DT D ERRLOG(513) ;864
  1. ;
  1. ; Primary & Credit Stop Codes can't be the same
  1. I +SDSTOPCODE>0,+SDCREDITSTOP>0,SDSTOPCODE=SDCREDITSTOP S POP=1 D ERRLOG(380)
  1. Q
  1. ;
  1. ERRLOG(ERNUM,OPTIONALTXT) ;
  1. S POP=1
  1. D ERRLOG^SDESJSON(.SDCLINIC,$G(ERNUM),$G(OPTIONALTXT))
  1. Q
  1. ;
  1. CHECKYN(VAR) Q $$CHECKYN^SDESCLINICSET2(VAR)
  1. ;
  1. BUILDER ;Convert data to JSON
  1. N JSONERR
  1. S JSONERR=""
  1. D ENCODE^SDESJSON(.SDCLINIC,.RETURN,.JSONERR)
  1. Q
  1. ;
  1. CREATE ;
  1. N X
  1. S FDA(44,"+1,",.01)=SDNAME
  1. S FDA(44,"+1,",1)=SDABR
  1. S FDA(44,"+1,",2)="C" ;Type
  1. S FDA(44,"+1,",2.1)=$$FIND1^DIC(40.9,,,"CLINIC") ;Type Extension pointer to 40.9
  1. S FDA(44,"+1,",3.5)=SDDIVSION
  1. S FDA(44,"+1,",8)=SDSTOPCODE
  1. S FDA(44,"+1,",9)=SDSERVICE
  1. S FDA(44,"+1,",10)=SDLOCATION
  1. S FDA(44,"+1,",20)=SDECHECKIN
  1. S FDA(44,"+1,",21)=SDPRECHECKIN
  1. S FDA(44,"+1,",24)=SDINOUTTIME
  1. S FDA(44,"+1,",30)=SDWORKLOAD
  1. S FDA(44,"+1,",60)=SDPATNAME
  1. S FDA(44,"+1,",61)=SDPATSCHED
  1. S FDA(44,"+1,",62)=SDDISPAPPT
  1. S FDA(44,"+1,",99)=SDPHONE
  1. S FDA(44,"+1,",99.1)=SDPHONEEXT
  1. S FDA(44,"+1,",1912)=SDLENGTHOFAPT
  1. S FDA(44,"+1,",1913)=SDVARAPTLNG
  1. S FDA(44,"+1,",1914)=SDSTARTHR
  1. S FDA(44,"+1,",1916)=SDPRINCLINIC
  1. S FDA(44,"+1,",1917)=SDINCPERHR
  1. S FDA(44,"+1,",1918)=SDOVBDAYMAX
  1. S FDA(44,"+1,",1918.5)=SDSCHEDHOLIDAY
  1. S FDA(44,"+1,",2000)=SDREQXRAY
  1. S FDA(44,"+1,",2000.5)=SDREQPROFILE
  1. S FDA(44,"+1,",2001)=SDALLOWNOSHW
  1. S FDA(44,"+1,",2002)=SDMAXFUTBOOK
  1. S FDA(44,"+1,",2500)=SDNOACCESS
  1. S FDA(44,"+1,",2502)=SDNONCOUNT
  1. S FDA(44,"+1,",2503)=SDCREDITSTOP
  1. S FDA(44,"+1,",2504)=SDMEETATFAC
  1. S FDA(44,"+1,",2507)=SDAPPTTYP
  1. S FDA(44,"+1,",2508)=SDNOSHOWLET
  1. S FDA(44,"+1,",2509)=SDPREAPTLET
  1. S FDA(44,"+1,",2510)=SDCANLET
  1. S FDA(44,"+1,",2511)=SDAPTCANLET
  1. S FDA(44,"+1,",2801)=SDPRACTIONER
  1. S FDA(44,"+1,",2802)=SDINPATMED
  1. Q
  1. ;
  1. UPDATE ;
  1. N X
  1. S X=SDIEN
  1. S:SDNAME'="" FDA(44,X_",",.01)=SDNAME
  1. S:SDABR'="" FDA(44,X_",",1)=SDABR
  1. S:SDDIVSION'="" FDA(44,X_",",3.5)=SDDIVSION
  1. S:SDSTOPCODE'="" FDA(44,X_",",8)=SDSTOPCODE
  1. S:SDSERVICE'="" FDA(44,X_",",9)=SDSERVICE
  1. S:SDLOCATION'="" FDA(44,X_",",10)=SDLOCATION
  1. S:SDECHECKIN'="" FDA(44,X_",",20)=SDECHECKIN
  1. S:SDPRECHECKIN'="" FDA(44,X_",",21)=SDPRECHECKIN
  1. S:SDINOUTTIME'="" FDA(44,X_",",24)=SDINOUTTIME
  1. S:SDWORKLOAD'="" FDA(44,X_",",30)=SDWORKLOAD
  1. S:SDPATNAME'="" FDA(44,X_",",60)=SDPATNAME
  1. S:SDPATSCHED'="" FDA(44,X_",",61)=SDPATSCHED
  1. S:SDDISPAPPT'="" FDA(44,X_",",62)=SDDISPAPPT
  1. S:SDPHONE'="" FDA(44,X_",",99)=SDPHONE
  1. S:SDPHONEEXT'="" FDA(44,X_",",99.1)=SDPHONEEXT
  1. S:SDLENGTHOFAPT'="" FDA(44,X_",",1912)=SDLENGTHOFAPT
  1. S:SDVARAPTLNG'="" FDA(44,X_",",1913)=SDVARAPTLNG
  1. S:SDPRINCLINIC'="" FDA(44,X_",",1916)=SDPRINCLINIC
  1. S:SDOVBDAYMAX'="" FDA(44,X_",",1918)=SDOVBDAYMAX
  1. S:SDREQXRAY'="" FDA(44,X_",",2000)=SDREQXRAY
  1. S:SDREQPROFILE'="" FDA(44,X_",",2000.5)=SDREQPROFILE
  1. S:SDALLOWNOSHW'="" FDA(44,X_",",2001)=SDALLOWNOSHW
  1. S:SDMAXFUTBOOK'="" FDA(44,X_",",2002)=SDMAXFUTBOOK
  1. S:SDNOACCESS'="" FDA(44,X_",",2500)=SDNOACCESS
  1. S:SDNONCOUNT'="" FDA(44,X_",",2502)=SDNONCOUNT
  1. S:SDCREDITSTOP'="" FDA(44,X_",",2503)=SDCREDITSTOP
  1. S:SDMEETATFAC'="" FDA(44,X_",",2504)=SDMEETATFAC
  1. S:SDAPPTTYP'="" FDA(44,X_",",2507)=SDAPPTTYP
  1. S:SDNOSHOWLET'="" FDA(44,X_",",2508)=SDNOSHOWLET
  1. S:SDPREAPTLET'="" FDA(44,X_",",2509)=SDPREAPTLET
  1. S:SDCANLET'="" FDA(44,X_",",2510)=SDCANLET
  1. S:SDAPTCANLET'="" FDA(44,X_",",2511)=SDAPTCANLET
  1. S:SDPRACTIONER'="" FDA(44,X_",",2801)=SDPRACTIONER
  1. S:SDINPATMED'="" FDA(44,X_",",2802)=SDINPATMED
  1. Q