- SDEC52 ;ALB/SAT,CT,LAB,BWF - VISTA SCHEDULING RPCS ;OCT 19, 2022
- ;;5.3;Scheduling;**627,642,651,658,745,813,827**;Aug 13, 1993;Build 10
- ;
- Q
- ;
- RECGET(SDECY,DFN,SDBEG,SDEND,MAXREC,LASTSUB,RECIEN,SDSTOP,SDFLAGS,SDCLL) ; GET entries from the RECALL REMINDERS file 403.5 for a given Patient and Recall Date range. ;alb/sat 658 add SDCLL
- RECGETA ;
- N SDCL,SDDATA,SDECI,SDDEMO,SDMSG,SDTMP ;alb/sat 658 added SDCL
- N ACCESION,APPTLEN,CLINIEN,CLINNAME,COMM,DAPTDT,DATE,DATE1,DATE2,DATE3,DOB,ELIGIEN,ELIGNAME,ERR,FASTING ;alb/sat 658 added ERR
- N GAF,GENDER,HRN,IEN,INSTIEN,INSTNAME,NAME,PD,PM,PRIGRP,RRAPPTYP,RRPROVNAME,PTINFO,RRPROVIEN,SSN
- N SVCCONNP,SVVCCONN,SDDFN
- N PADDRES1,PADDRES2,PADDRES3,PCITY,PSTATE,PCOUNTRY,PTPHONE,PZIP4
- N SDCNT,SDI,SDJ,SDSENS,SDSUB,TYPEIEN,TYPENAME,USERIEN,USERNAME,X,Y,%DT
- N BADADD,OPHONE,NOK,KNAME,KREL,KPHONE,KSTREET,KSTREET2,KSTREET3,KCITY,KSTATE,KZIP
- N NOK2,K2NAME,K2REL,K2PHONE,K2STREET,S2STREE2,K2STREET3,K2CITY,K2STATE,K2ZIP,PCOUNTY
- N PMARITAL,PRELIGION,PTACTIVE,PTADDRESS1,PTADDRESS2,PTADDRESS3,PTCITY,PTSTATE,PTZIP,PTZIP4
- N PTCOUNTRY,PTCOUNTY,PTMPHONE,PTSTART,PTEND,PCELL,PPAGER,PEMAIL,PFFFF,PFVCD,PFNATIONAL,PFLOCAL
- ;
- S ERR=0 ;alb/sat 658
- S SDSUB=""
- S SDECY="^TMP(""SDEC52"","_$J_",""RECGET"")"
- K @SDECY
- S SDECI=0
- D HDR
- ;validate SDFLAGS (optional) ;alb/sat 651
- S SDFLAGS=$G(SDFLAGS)
- ;validate RECIEN (optional)
- S RECIEN=$G(RECIEN)
- I RECIEN'="" I '$D(^SD(403.5,RECIEN,0)) D ERR1^SDECERR(-1,"Invalid Recall Reminders ID.",SDECI,SDECY) Q
- I RECIEN'="" D RECIEN1 G RECX
- S SDCNT=0
- ;validate SDBEG
- S SDBEG=$G(SDBEG)
- I $G(SDBEG)'="" S %DT="" S X=$P($G(SDBEG),"@",1) D ^%DT S SDBEG=Y I Y=-1 S SDBEG=$$FMADD^XLFDT($P($$NOW^XLFDT,".",1),-1825)
- I $G(SDBEG)="" S SDBEG=$$FMADD^XLFDT($P($$NOW^XLFDT,".",1),-1825)
- ;validate SDEND (optional)
- S SDEND=$G(SDEND)
- I SDEND'="" S %DT="" S X=$P($G(SDEND),"@",1) D ^%DT S SDEND=Y I Y=-1 S SDEND=$$FMADD^XLFDT($P($$NOW^XLFDT,".",1),-90)
- I SDEND="" S SDEND=$$FMADD^XLFDT($P($$NOW^XLFDT,".",1),-90)
- ;validate SDSTOP (optional)
- S SDSTOP=$G(SDSTOP)
- ;validate DFN (optional)
- S DFN=$G(DFN)
- I DFN'="" I '$D(^DPT(DFN,0)) S DFN=""
- ;get all records for a specific patient
- I +DFN D RECGET1(DFN,,SDBEG,SDEND,SDFLAGS) G RECX ;alb/sat 651 - add SDFLAGS
- ;get records in specified date range
- ;validate MAXREC (optional)
- S MAXREC=$G(MAXREC) I 'MAXREC S MAXREC=9999999
- ;validate LASTSUB (optional)
- S LASTSUB=$G(LASTSUB)
- ;validate SDCLL (optional) ;alb/sat 658
- S SDCLL=$G(SDCLL)
- I SDCLL'="" D
- .F SDJ=1:1:$L(SDCLL,U) S SDCL=+$P(SDCLL,U,SDJ) D Q:ERR
- ..I '$D(^SD(403.5,SDCL,0)) S @SDECY@(1)="-1^Invalid clinic ID."_$C(30,31),ERR=1 Q
- .D RECSDCL
- Q:ERR
- G:SDCLL'="" RECX
- ;get Recalls for date range
- D RECGETD
- RECX S SDTMP=@SDECY@(SDECI) S SDTMP=$P(SDTMP,$C(30),1)
- S:$G(SDSUB)'="" $P(SDTMP,U,42)=SDSUB
- S @SDECY@(SDECI)=SDTMP_$C(30,31)
- Q
- ;
- HDR ;Print out the header
- S SDTMP="T00030IEN^T00030DFN^T00030NAME^T00030HRN^T00030DOB^T00030SSN^T00030GENDER^T00030INSTIEN^T00030INSTNAME"
- S SDTMP=SDTMP_"^T00030ACCESION^T00080COMM^T00030FASTING^T00030RRAPPTYP"
- S SDTMP=SDTMP_"^T00030RRPROVIEN^T00030PROVNAME^T00030CLINIEN^T00030CLINNAME^T00030APPTLEN"
- S SDTMP=SDTMP_"^T00030DATE^T00030DATE1^T00030DAPTDT^T00030USERIEN^T00030USERNAME^T00030DATE2"
- S SDTMP=SDTMP_"^T00030PRIGRP^T00030ELIGIEN^T00030ELIGNAME^T00030SVCCONN^T00030SVCCONNP"
- S SDTMP=SDTMP_"^T00030TYPEIEN^T00030TYPENAME^T00030DATE3^T00030PADDRES1^T00030PADDRES2^T00030PADDRES3"
- S SDTMP=SDTMP_"^T00030PCITY^T00030PSTATE^T00030PCOUNTRY^T00030PZIP4^T00030GAF^T00100SENSITIVE^T00030LASTSUB^T00030PTPHONE"
- S SDTMP=SDTMP_"^T00030PRACE^T00030PRACEN^T00030PETH^T00030PETHN^T00030PRHBLOC"
- S SDTMP=SDTMP_"^T00030BADDADD^T00030OPHONE^T00030NOK^T00030KNAME^T00030KREL^T00030KPHONE"
- S SDTMP=SDTMP_"^T00030KSTREET^T00030KSTREET2^T00030KSTREET3^T00030KCITY^T00030KSTATE^T00030KZIP"
- S SDTMP=SDTMP_"^T00030NOK2^T00030K2NAME^T00030N2REL^T00030K2PHONE"
- S SDTMP=SDTMP_"^T00030K2STREET^T00030K2STREET2^T00030K2STREET3^T00030K2CITY^T00030K2STATE^T00030K2ZIP"
- S SDTMP=SDTMP_"^T00030PCOUNTY^T00030PMARITAL^T00030PRELIGION^T00030PTACTIVE"
- S SDTMP=SDTMP_"^T00030PTADDRESS1^T00030PTADDRESS2^T00030PTADDRESS3^T00030PTCITY^T00030PTSTATE^T00030PTZIP^T00030PTZIP+4"
- S SDTMP=SDTMP_"^T00030PTCOUNTRY^T00030PTCOUNTY^T00030PTMPHONE^T00030PTSTART^T00030PTEND"
- S SDTMP=SDTMP_"^T00030PCELL^T00030PPAGER^T00030PEMAIL^T00030PF_FFF^T00030PF_VCD^T00030PFNATIONAL^T00030PFLOCAL"
- S SDTMP=SDTMP_"^T00030SUBGRP^T00030CAT8G^T01000SIMILAR^T00030CPHONE^T00030CLET" ;added call phone & letter *745 5/14/20
- S SDTMP=SDTMP_"^T00030CEMAIL^T00030CTEXT^T00030CSEC" ;added call phone & letter *745 5/14/20
- S @SDECY@(SDECI)=SDTMP_$C(30)
- Q
- ;
- RECGET1(DFN,IEN,SDBEG,SDEND,SDFLAGS) ;get all recall data for 1 patient ;alb/sat 651 - add SDFLAGS
- ; DFN = (required) patient ID pointer to PATIENT file 2
- ; IEN - (optional) recall ID pointer to RECALL REMINDERS file
- ; all records in date range will be return if IEN=""
- N X,Y,%DT
- S SDFLAGS=$G(SDFLAGS) ;alb/sat 651
- ;check for valid Patient (required)
- I '$D(^DPT(+$G(DFN),0)) D ERR1^SDECERR(-1,"Invalid Patient ID",SDECI,SDECY) Q
- ;check begin date (optional)
- I $G(SDBEG)'="" S %DT="" S X=$P($G(SDBEG),"@",1) D ^%DT S SDBEG=Y I Y=-1 S SDBEG=1410102 ;alb/sat 658 use valid FM range instead of 1000101
- I $G(SDBEG)="" S SDBEG=1410102 ;alb/sat 658 use valid FM range instead of 1000101
- ;check end date (optional)
- I $G(SDEND)'="" S %DT="" S X=$P($G(SDEND),"@",1) D ^%DT S SDEND=Y I Y=-1 S SDEND=$$FMADD^XLFDT($P($$NOW^XLFDT,".",1),-90)
- I $G(SDEND)="" S SDEND=$$FMADD^XLFDT($P($$NOW^XLFDT,".",1),-90)
- ;get RECALL REMINDERS data
- S IEN=$G(IEN)
- I IEN'="" D GET1 Q
- I IEN="" F S IEN=$O(^SD(403.5,"B",DFN,IEN)) Q:IEN="" D GET1
- Q
- ;
- RECGETD ;get recall data for date range
- S SDFLAGS=$G(SDFLAGS) ;alb/sat 651
- I 'SDSTOP D
- .S SDI=$S($P(LASTSUB,"|",1)'="":$P(LASTSUB,"|",1)-1,1:SDBEG-1) F S SDI=$O(^SD(403.5,"D",SDI)) Q:SDI'>0 Q:SDI>$P(SDEND,".",1) D I SDECI>(MAXREC-1) S SDSUB=SDI_"|"_$S(SDDFN>0:SDDFN,1:"") Q
- ..S SDDFN=$S($P(LASTSUB,"|",2)'="":$P(LASTSUB,"|",2),1:"") S LASTSUB="" F S SDDFN=$O(^SD(403.5,"D",SDI,SDDFN)) Q:SDDFN'>0 D Q:SDECI>(MAXREC-1)
- ...S DFN=$$GET1^DIQ(403.5,SDDFN_",",.01,"I") D RECGET1(DFN,SDDFN,SDBEG,SDEND,SDFLAGS) ;alb/sat 651 - add SDFLAGS
- I +SDSTOP D
- .S SDI=$S($P(LASTSUB,"|",1)'="":$P(LASTSUB,"|",1)+1,1:SDEND+1) F S SDI=$O(^SD(403.5,"D",SDI),-1) Q:SDI'>0 Q:SDI<$P(SDBEG,".",1) D I SDECI>(MAXREC-1) S SDSUB=SDI_"|"_$S(SDDFN>0:SDDFN,1:"") Q
- ..S SDDFN=$S($P(LASTSUB,"|",2)'="":$P(LASTSUB,"|",2),1:999999999) S LASTSUB="" F S SDDFN=$O(^SD(403.5,"D",SDI,SDDFN),-1) Q:SDDFN'>0 D Q:SDECI>(MAXREC-1)
- ...S DFN=$$GET1^DIQ(403.5,SDDFN_",",.01,"I") D RECGET1(DFN,SDDFN,SDBEG,SDEND,SDFLAGS) ;alb/sat 651 - add SDFLAGS
- Q
- RECSDCL ;get recall data for clinics ;alb/sat 658
- N SDCL,IEN,SDJ
- ;LASTSUB=clinic | ien
- I 'SDSTOP D
- .S SDCL=$S($P(LASTSUB,"|",1)'="":$P(LASTSUB,"|",1),1:"")
- .S SDJ=$S(SDCL'="":$$PF(SDCLL,SDCL,U),1:1)
- .F SDJ=SDJ:1:$L(SDCLL,U) S SDCL=$P(SDCLL,U,SDJ) D I SDECI>(MAXREC-1) S SDSUB=SDCL_"|"_IEN Q
- ..S IEN=$S($P(LASTSUB,"|",2)'="":$P(LASTSUB,"|",2)-1,1:"") S LASTSUB=""
- ..F S IEN=$O(^SD(403.5,"E",SDCL,IEN)) Q:IEN'>0 D I SDECI>(MAXREC-1) S SDSUB=SDCL_"|"_IEN Q
- ...S DFN="" D GET1
- I +SDSTOP D
- .S SDCL=$S($P(LASTSUB,"|",1)'="":$P(LASTSUB,"|",1),1:"")
- .S SDJ=$S(SDCL'="":$$PF(SDCLL,SDCL,U),1:1)
- .F SDJ=SDJ:1:$L(SDCLL,U) S SDCL=$P(SDCLL,U,SDJ) D I SDECI>(MAXREC-1) S SDSUB=SDCL_"|"_IEN Q
- ..S IEN=$S($P(LASTSUB,"|",2)'="":$P(LASTSUB,"|",2)-1,1:999999999) S LASTSUB=""
- ..F S IEN=$O(^SD(403.5,"E",SDCL,IEN),-1) Q:IEN'>0 D I SDECI>(MAXREC-1) S SDSUB=SDCL_"|"_IEN Q
- ...D GET1
- Q
- ;
- RECIEN(SDECY,RECIEN) ;Get recall data for one entry
- RECIEN1 ;
- ;Input is IEN to retieve data on
- N ACCESION,APPTLEN,CLINIEN,CLINNAME,COMM,DAPTDT,DATE,DATE1,DATE2,DATE3,DOB,ELIGIEN,ELIGNAME,FASTING
- N GAF,GENDER,HRN,IEN,INSTIEN,INSTNAME,NAME,PD,PM,PRIGRP,RRAPPTYP,RRPROVNAME,PTINFO,RRPROVIEN,SSN
- N CAT8G,SIMILAR,SUBGRP,SVCCONNP,SVVCCONN,SDBEG,SDEND,SDREC
- N PADDRES1,PADDRES2,PADDRES3,PCITY,PSTATE,PCOUNTRY,PZIP4
- N SDCNT,SDI,SDSENS,SDSUB,TYPEIEN,TYPENAME,USERIEN,USERNAME,X,Y,%DT
- S SDSUB=""
- S SDECY="^TMP(""SDEC52"","_$J_",""RECGET"")"
- K @SDECY
- S SDECI=0
- D HDR
- S SDBEG=1410102 ;alb/sat 658 use valid FM range instead of 1000101
- S SDEND=4141015 ;alb/sat 658 use valid FM range instead of 9991231
- S DFN=$$GET1^DIQ(403.5,RECIEN_",",.01,"I") I +DFN D
- .D RECGETP(DFN)
- .D RECGET1(DFN,RECIEN,SDBEG,SDEND)
- Q
- ;
- RECGETP(DFN) ;get patient data
- ;collect demographics
- D PDEMO^SDECU3(.SDDEMO,DFN) ;alb/sat 658 PDEMO moved ot SDECU3
- S NAME=SDDEMO("NAME")
- S DOB=SDDEMO("DOB")
- S GENDER=SDDEMO("GENDER")
- S HRN=SDDEMO("HRN")
- S SSN=SDDEMO("SSN")
- S INSTIEN=SDDEMO("INSTIEN")
- S INSTNAME=SDDEMO("INSTNAME")
- S PRIGRP=SDDEMO("PRIGRP") ;25
- S ELIGIEN=SDDEMO("ELIGIEN") ;26
- S ELIGNAME=SDDEMO("ELIGNAME") ;27
- S SVVCCONN=SDDEMO("SVCCONN") ;28
- S SVCCONNP=SDDEMO("SVCCONNP") ;29
- S TYPEIEN=SDDEMO("TYPEIEN") ;30
- S TYPENAME=SDDEMO("TYPENAME") ;31
- S PADDRES1=SDDEMO("PADDRES1") ;33 - Patient Address line 1
- S PADDRES2=SDDEMO("PADDRES2") ;34 - Patient Address line 2
- S PADDRES3=SDDEMO("PADDRES3") ;35 - Patient Address line 3
- S PCITY=SDDEMO("PCITY") ;36 - Patient City
- S PSTATE=SDDEMO("PSTATE") ;37 - Patient state name
- S PCOUNTRY=SDDEMO("PCOUNTRY") ;38 - Patient country name
- S PZIP4=SDDEMO("PZIP+4") ;39 - Patient Zip+4
- S PTPHONE=SDDEMO("HPHONE") ;43 - Patient Phone
- S GAF=$$GAF^SDECU2(DFN) ;40
- S SDSENS=$$PTSEC^SDECUTL(DFN) ;41
- ;
- S BADADD=SDDEMO("BADADD")
- S OPHONE=SDDEMO("OPHONE")
- S NOK=SDDEMO("NOK")
- S KNAME=SDDEMO("KNAME")
- S KREL=SDDEMO("KREL")
- S KPHONE=SDDEMO("KPHONE")
- S KSTREET=SDDEMO("KSTREET")
- S KSTREET2=SDDEMO("KSTREET2")
- S KSTREET3=SDDEMO("KSTREET3")
- S KCITY=SDDEMO("KCITY")
- S KSTATE=SDDEMO("KSTATE")
- S KZIP=SDDEMO("KZIP")
- S NOK2=SDDEMO("NOK2")
- S K2NAME=SDDEMO("K2NAME")
- S K2REL=SDDEMO("K2REL")
- S K2PHONE=SDDEMO("K2PHONE")
- S K2STREET=SDDEMO("K2STREET")
- S S2STREE2=SDDEMO("K2STREET2")
- S K2STREET3=SDDEMO("K2STREET3")
- S K2CITY=SDDEMO("K2CITY")
- S K2STATE=SDDEMO("K2STATE")
- S K2ZIP=SDDEMO("K2ZIP")
- S PCOUNTY=SDDEMO("PCOUNTY")
- S PMARITAL=SDDEMO("PMARITAL")
- S PRELIGION=SDDEMO("PRELIGION")
- S PTACTIVE=SDDEMO("PTACTIVE")
- S PTADDRESS1=SDDEMO("PTADDRESS1")
- S PTADDRESS2=SDDEMO("PTADDRESS2")
- S PTADDRESS3=SDDEMO("PTADDRESS3")
- S PTCITY=SDDEMO("PTCITY")
- S PTSTATE=SDDEMO("PTSTATE")
- S PTZIP=SDDEMO("PTZIP")
- S PTZIP4=SDDEMO("PTZIP+4")
- S PTCOUNTRY=SDDEMO("PTCOUNTRY")
- S PTCOUNTY=SDDEMO("PTCOUNTY")
- S PTMPHONE=SDDEMO("PTPHONE")
- S PTSTART=SDDEMO("PTSTART")
- S PTEND=SDDEMO("PTEND")
- S PCELL=SDDEMO("PCELL")
- S PPAGER=SDDEMO("PPAGER")
- S PEMAIL=SDDEMO("PEMAIL")
- S PFFFF=SDDEMO("PF_FFF")
- S PFVCD=SDDEMO("PF_VCD")
- S PFNATIONAL=SDDEMO("PFNATIONAL")
- S PFLOCAL=SDDEMO("PFLOCAL")
- S SUBGRP=$G(SDDEMO("SUBGRP"))
- S CAT8G=(PRIGRP="GROUP 8")&(SUBGRP="g")
- S SIMILAR=SDDEMO("SIMILAR")
- Q
- ;
- GET1 ;
- N PRACE,PRACEN,PETH,PETHN,PRHBLOC,PROVNAME
- K SDDATA,SDMSG
- S SDFLAGS=$G(SDFLAGS) ;alb/sat 651
- S PRHBLOC=0
- D GETS^DIQ(403.5,IEN,"**","IE","SDDATA","SDMSG")
- ; if there is an error (SDMSG), clean up dangling cross references - SD*827
- I $D(SDMSG),'$D(^SD(403.5,IEN)) D
- .N D0,I,STR,X,N3,N4
- .S D0=IEN D KXREF^SDRRTSK
- ; quit if there is an error
- Q:$D(SDMSG)
- S DATE=SDDATA(403.5,IEN_",",5,"I")
- Q:(DATE<SDBEG)!(DATE>SDEND)
- S:$G(DFN)="" DFN=SDDATA(403.5,IEN_",",.01,"I") ;alb/sat 658 get Patient
- ;get PATIENT data
- D RECGETP(DFN)
- S ACCESION=SDDATA(403.5,IEN_",",2,"E") ; 10. Accession # (free-text 1-25 characters)
- S COMM=SDDATA(403.5,IEN_",",2.5,"E") ; 11. COMMENT (free-text 1-80 characters)
- S FASTING=SDDATA(403.5,IEN_",",2.6,"I") ; 12. FASTING/NON-FASTING
- S RRAPPTYP=SDDATA(403.5,IEN_",",3,"I") ; 13. Test/App pointer to RECALL REMINDERS APPT TYPE file 403.51
- S RRPROVIEN=SDDATA(403.5,IEN_",",4,"I") ; 14. Pointer to RECALL REMINDERS PROVIDERS file 403.54
- S PROVNAME=SDDATA(403.5,IEN_",",4,"E") ; 15. Provider NAME of Provider in RECALL REMINDERS PROVIDERS file
- S CLINIEN=SDDATA(403.5,IEN_",",4.5,"I") ; 16. Clinic pointer to HOSPITAL LOCATION file
- I CLINIEN="",+$E(SDFLAGS) Q ; do not return if no clinic defined ;alb/sat 651
- S CLINNAME=SDDATA(403.5,IEN_",",4.5,"E") ; 17. Clinic NAME from HOSPITAL LOCATION file
- I CLINIEN'="",$$GET1^DIQ(44,CLINIEN_",",50.01,"I")=1 Q ;check OOS?
- S:CLINIEN'="" PRHBLOC=$S($$GET1^DIQ(44,+CLINIEN_",",2500,"I")="Y":1,1:0)
- S APPTLEN=SDDATA(403.5,IEN_",",4.7,"E") ; 18. Length of Appointment numeric between 10 and 120
- S DATE=SDDATA(403.5,IEN_",",5,"I") S DATE=$$FMTE^XLFDT(DATE) ;19. Recall Date in external format (no time)
- S DATE1=SDDATA(403.5,IEN_",",5.5,"I") S DATE1=$$FMTE^XLFDT(DATE1) ;20. Recall Date (Per patient) in external format (no time)
- S DAPTDT=SDDATA(403.5,IEN_",",6,"I") S DAPTDT=$$FMTE^XLFDT(DAPTDT) ;21. Date Reminder Sent in external format (no time)
- S USERIEN=SDDATA(403.5,IEN_",",7,"I") ; 22. User Who Entered Recall pointer to NEW PERSON file
- S USERNAME=SDDATA(403.5,IEN_",",7,"E") ; 23. User Who Entered Recall NAME from NEW PERSON file
- S DATE3=SDDATA(403.5,IEN_",",7.5,"E") ; 32. DATE/TIME RECALL ADDED
- S:DATE3="" DATE3=DATE
- S DATE2=SDDATA(403.5,IEN_",",8,"I") S DATE2=$$FMTE^XLFDT(DATE2) ;24. Second Print Date in external format (no time)
- D RACELST^SDECU2(DFN,.PRACE,.PRACEN)
- D ETH^SDECU2(DFN,.PETH,.PETHN) ;get ethnicity
- S SDTMP=IEN_U_DFN_U_NAME_U_HRN_U_DOB_U_SSN_U_GENDER_U_INSTIEN_U_INSTNAME ; 9
- S SDTMP=SDTMP_U_ACCESION_U_COMM_U_FASTING_U_RRAPPTYP ;13
- S SDTMP=SDTMP_U_RRPROVIEN_U_PROVNAME_U_CLINIEN_U_CLINNAME_U_APPTLEN ;18
- S SDTMP=SDTMP_U_DATE_U_DATE1_U_DAPTDT_U_USERIEN_U_USERNAME_U_DATE2 ;24
- S SDTMP=SDTMP_U_PRIGRP_U_ELIGIEN_U_ELIGNAME_U_SVVCCONN_U_SVCCONNP ;29
- S SDTMP=SDTMP_U_TYPEIEN_U_TYPENAME_U_DATE3_U_PADDRES1_U_PADDRES2_U_PADDRES3 ;35
- S SDTMP=SDTMP_U_PCITY_U_PSTATE_U_PCOUNTRY_U_PZIP4_U_GAF_U_SDSENS ;41
- S SDTMP=SDTMP_U_U_PTPHONE_U_PRACE_U_PRACEN_U_PETH_U_PETHN_U_PRHBLOC ;48
- S $P(SDTMP,U,49)=BADADD
- S $P(SDTMP,U,50)=OPHONE
- S $P(SDTMP,U,51)=NOK
- S $P(SDTMP,U,52)=KNAME
- S $P(SDTMP,U,53)=KREL
- S $P(SDTMP,U,54)=KPHONE
- S $P(SDTMP,U,55)=KSTREET
- S $P(SDTMP,U,56)=KSTREET2
- S $P(SDTMP,U,57)=KSTREET3
- S $P(SDTMP,U,58)=KCITY
- S $P(SDTMP,U,59)=KSTATE
- S $P(SDTMP,U,60)=KZIP
- S $P(SDTMP,U,61)=NOK2
- S $P(SDTMP,U,62)=K2NAME
- S $P(SDTMP,U,63)=K2REL
- S $P(SDTMP,U,64)=K2PHONE
- S $P(SDTMP,U,65)=K2STREET
- S $P(SDTMP,U,66)=S2STREE2
- S $P(SDTMP,U,67)=K2STREET3
- S $P(SDTMP,U,68)=K2CITY
- S $P(SDTMP,U,69)=K2STATE
- S $P(SDTMP,U,70)=K2ZIP
- S $P(SDTMP,U,71)=PCOUNTY
- S $P(SDTMP,U,72)=PMARITAL
- S $P(SDTMP,U,73)=PRELIGION
- S $P(SDTMP,U,74)=PTACTIVE
- S $P(SDTMP,U,75)=PTADDRESS1
- S $P(SDTMP,U,76)=PTADDRESS2
- S $P(SDTMP,U,77)=PTADDRESS3
- S $P(SDTMP,U,78)=PTCITY
- S $P(SDTMP,U,79)=PTSTATE
- S $P(SDTMP,U,80)=PTZIP
- S $P(SDTMP,U,81)=PTZIP4
- S $P(SDTMP,U,82)=PTCOUNTRY
- S $P(SDTMP,U,83)=PTCOUNTY
- S $P(SDTMP,U,84)=PTMPHONE
- S $P(SDTMP,U,85)=PTSTART
- S $P(SDTMP,U,86)=PTEND
- S $P(SDTMP,U,87)=PCELL
- S $P(SDTMP,U,88)=PPAGER
- S $P(SDTMP,U,89)=PEMAIL
- S $P(SDTMP,U,90)=PFFFF
- S $P(SDTMP,U,91)=PFVCD
- S $P(SDTMP,U,92)=PFNATIONAL
- S $P(SDTMP,U,93)=PFLOCAL
- S $P(SDTMP,U,94)=SUBGRP
- S $P(SDTMP,U,95)=CAT8G
- S $P(SDTMP,U,96)=SIMILAR
- S SDREC=$$RECALL^SDECAR1A(DFN,RECIEN),$P(SDTMP,U,97)=$P(SDREC,U,1),$P(SDTMP,U,98)=$P(SDREC,U,2) ; SDECALL_U_SDECLET 97^98 GET CALL AND LETTER DATA ;CT - *745 5/12/20
- S $P(SDTMP,U,99)=$P(SDREC,U,3) ;813 CEMAIL
- S $P(SDTMP,U,100)=$P(SDREC,U,4) ;813 CTEXT
- S $P(SDTMP,U,101)=$P(SDREC,U,5) ;813 CSEC
- S SDECI=SDECI+1 S @SDECY@(SDECI)=SDTMP_$C(30)
- Q
- ;
- PF(STRING,SUB,DI) ;piece find
- N SDI
- S STRING=$G(STRING) Q:STRING="" ""
- S SUB=$G(SUB) Q:SUB="" ""
- S DI=$G(DI) S:DI="" DI=U
- F SDI=1:1:$L(STRING,DI) Q:$P(STRING,DI,SDI)=SUB
- Q SDI
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDEC52 16253 printed Mar 13, 2025@21:55:46 Page 2
- SDEC52 ;ALB/SAT,CT,LAB,BWF - VISTA SCHEDULING RPCS ;OCT 19, 2022
- +1 ;;5.3;Scheduling;**627,642,651,658,745,813,827**;Aug 13, 1993;Build 10
- +2 ;
- +3 QUIT
- +4 ;
- RECGET(SDECY,DFN,SDBEG,SDEND,MAXREC,LASTSUB,RECIEN,SDSTOP,SDFLAGS,SDCLL) ; GET entries from the RECALL REMINDERS file 403.5 for a given Patient and Recall Date range. ;alb/sat 658 add SDCLL
- RECGETA ;
- +1 ;alb/sat 658 added SDCL
- NEW SDCL,SDDATA,SDECI,SDDEMO,SDMSG,SDTMP
- +2 ;alb/sat 658 added ERR
- NEW ACCESION,APPTLEN,CLINIEN,CLINNAME,COMM,DAPTDT,DATE,DATE1,DATE2,DATE3,DOB,ELIGIEN,ELIGNAME,ERR,FASTING
- +3 NEW GAF,GENDER,HRN,IEN,INSTIEN,INSTNAME,NAME,PD,PM,PRIGRP,RRAPPTYP,RRPROVNAME,PTINFO,RRPROVIEN,SSN
- +4 NEW SVCCONNP,SVVCCONN,SDDFN
- +5 NEW PADDRES1,PADDRES2,PADDRES3,PCITY,PSTATE,PCOUNTRY,PTPHONE,PZIP4
- +6 NEW SDCNT,SDI,SDJ,SDSENS,SDSUB,TYPEIEN,TYPENAME,USERIEN,USERNAME,X,Y,%DT
- +7 NEW BADADD,OPHONE,NOK,KNAME,KREL,KPHONE,KSTREET,KSTREET2,KSTREET3,KCITY,KSTATE,KZIP
- +8 NEW NOK2,K2NAME,K2REL,K2PHONE,K2STREET,S2STREE2,K2STREET3,K2CITY,K2STATE,K2ZIP,PCOUNTY
- +9 NEW PMARITAL,PRELIGION,PTACTIVE,PTADDRESS1,PTADDRESS2,PTADDRESS3,PTCITY,PTSTATE,PTZIP,PTZIP4
- +10 NEW PTCOUNTRY,PTCOUNTY,PTMPHONE,PTSTART,PTEND,PCELL,PPAGER,PEMAIL,PFFFF,PFVCD,PFNATIONAL,PFLOCAL
- +11 ;
- +12 ;alb/sat 658
- SET ERR=0
- +13 SET SDSUB=""
- +14 SET SDECY="^TMP(""SDEC52"","_$JOB_",""RECGET"")"
- +15 KILL @SDECY
- +16 SET SDECI=0
- +17 DO HDR
- +18 ;validate SDFLAGS (optional) ;alb/sat 651
- +19 SET SDFLAGS=$GET(SDFLAGS)
- +20 ;validate RECIEN (optional)
- +21 SET RECIEN=$GET(RECIEN)
- +22 IF RECIEN'=""
- IF '$DATA(^SD(403.5,RECIEN,0))
- DO ERR1^SDECERR(-1,"Invalid Recall Reminders ID.",SDECI,SDECY)
- QUIT
- +23 IF RECIEN'=""
- DO RECIEN1
- GOTO RECX
- +24 SET SDCNT=0
- +25 ;validate SDBEG
- +26 SET SDBEG=$GET(SDBEG)
- +27 IF $GET(SDBEG)'=""
- SET %DT=""
- SET X=$PIECE($GET(SDBEG),"@",1)
- DO ^%DT
- SET SDBEG=Y
- IF Y=-1
- SET SDBEG=$$FMADD^XLFDT($PIECE($$NOW^XLFDT,".",1),-1825)
- +28 IF $GET(SDBEG)=""
- SET SDBEG=$$FMADD^XLFDT($PIECE($$NOW^XLFDT,".",1),-1825)
- +29 ;validate SDEND (optional)
- +30 SET SDEND=$GET(SDEND)
- +31 IF SDEND'=""
- SET %DT=""
- SET X=$PIECE($GET(SDEND),"@",1)
- DO ^%DT
- SET SDEND=Y
- IF Y=-1
- SET SDEND=$$FMADD^XLFDT($PIECE($$NOW^XLFDT,".",1),-90)
- +32 IF SDEND=""
- SET SDEND=$$FMADD^XLFDT($PIECE($$NOW^XLFDT,".",1),-90)
- +33 ;validate SDSTOP (optional)
- +34 SET SDSTOP=$GET(SDSTOP)
- +35 ;validate DFN (optional)
- +36 SET DFN=$GET(DFN)
- +37 IF DFN'=""
- IF '$DATA(^DPT(DFN,0))
- SET DFN=""
- +38 ;get all records for a specific patient
- +39 ;alb/sat 651 - add SDFLAGS
- IF +DFN
- DO RECGET1(DFN,,SDBEG,SDEND,SDFLAGS)
- GOTO RECX
- +40 ;get records in specified date range
- +41 ;validate MAXREC (optional)
- +42 SET MAXREC=$GET(MAXREC)
- IF 'MAXREC
- SET MAXREC=9999999
- +43 ;validate LASTSUB (optional)
- +44 SET LASTSUB=$GET(LASTSUB)
- +45 ;validate SDCLL (optional) ;alb/sat 658
- +46 SET SDCLL=$GET(SDCLL)
- +47 IF SDCLL'=""
- Begin DoDot:1
- +48 FOR SDJ=1:1:$LENGTH(SDCLL,U)
- SET SDCL=+$PIECE(SDCLL,U,SDJ)
- Begin DoDot:2
- +49 IF '$DATA(^SD(403.5,SDCL,0))
- SET @SDECY@(1)="-1^Invalid clinic ID."_$CHAR(30,31)
- SET ERR=1
- QUIT
- End DoDot:2
- if ERR
- QUIT
- +50 DO RECSDCL
- End DoDot:1
- +51 if ERR
- QUIT
- +52 if SDCLL'=""
- GOTO RECX
- +53 ;get Recalls for date range
- +54 DO RECGETD
- RECX SET SDTMP=@SDECY@(SDECI)
- SET SDTMP=$PIECE(SDTMP,$CHAR(30),1)
- +1 if $GET(SDSUB)'=""
- SET $PIECE(SDTMP,U,42)=SDSUB
- +2 SET @SDECY@(SDECI)=SDTMP_$CHAR(30,31)
- +3 QUIT
- +4 ;
- HDR ;Print out the header
- +1 SET SDTMP="T00030IEN^T00030DFN^T00030NAME^T00030HRN^T00030DOB^T00030SSN^T00030GENDER^T00030INSTIEN^T00030INSTNAME"
- +2 SET SDTMP=SDTMP_"^T00030ACCESION^T00080COMM^T00030FASTING^T00030RRAPPTYP"
- +3 SET SDTMP=SDTMP_"^T00030RRPROVIEN^T00030PROVNAME^T00030CLINIEN^T00030CLINNAME^T00030APPTLEN"
- +4 SET SDTMP=SDTMP_"^T00030DATE^T00030DATE1^T00030DAPTDT^T00030USERIEN^T00030USERNAME^T00030DATE2"
- +5 SET SDTMP=SDTMP_"^T00030PRIGRP^T00030ELIGIEN^T00030ELIGNAME^T00030SVCCONN^T00030SVCCONNP"
- +6 SET SDTMP=SDTMP_"^T00030TYPEIEN^T00030TYPENAME^T00030DATE3^T00030PADDRES1^T00030PADDRES2^T00030PADDRES3"
- +7 SET SDTMP=SDTMP_"^T00030PCITY^T00030PSTATE^T00030PCOUNTRY^T00030PZIP4^T00030GAF^T00100SENSITIVE^T00030LASTSUB^T00030PTPHONE"
- +8 SET SDTMP=SDTMP_"^T00030PRACE^T00030PRACEN^T00030PETH^T00030PETHN^T00030PRHBLOC"
- +9 SET SDTMP=SDTMP_"^T00030BADDADD^T00030OPHONE^T00030NOK^T00030KNAME^T00030KREL^T00030KPHONE"
- +10 SET SDTMP=SDTMP_"^T00030KSTREET^T00030KSTREET2^T00030KSTREET3^T00030KCITY^T00030KSTATE^T00030KZIP"
- +11 SET SDTMP=SDTMP_"^T00030NOK2^T00030K2NAME^T00030N2REL^T00030K2PHONE"
- +12 SET SDTMP=SDTMP_"^T00030K2STREET^T00030K2STREET2^T00030K2STREET3^T00030K2CITY^T00030K2STATE^T00030K2ZIP"
- +13 SET SDTMP=SDTMP_"^T00030PCOUNTY^T00030PMARITAL^T00030PRELIGION^T00030PTACTIVE"
- +14 SET SDTMP=SDTMP_"^T00030PTADDRESS1^T00030PTADDRESS2^T00030PTADDRESS3^T00030PTCITY^T00030PTSTATE^T00030PTZIP^T00030PTZIP+4"
- +15 SET SDTMP=SDTMP_"^T00030PTCOUNTRY^T00030PTCOUNTY^T00030PTMPHONE^T00030PTSTART^T00030PTEND"
- +16 SET SDTMP=SDTMP_"^T00030PCELL^T00030PPAGER^T00030PEMAIL^T00030PF_FFF^T00030PF_VCD^T00030PFNATIONAL^T00030PFLOCAL"
- +17 ;added call phone & letter *745 5/14/20
- SET SDTMP=SDTMP_"^T00030SUBGRP^T00030CAT8G^T01000SIMILAR^T00030CPHONE^T00030CLET"
- +18 ;added call phone & letter *745 5/14/20
- SET SDTMP=SDTMP_"^T00030CEMAIL^T00030CTEXT^T00030CSEC"
- +19 SET @SDECY@(SDECI)=SDTMP_$CHAR(30)
- +20 QUIT
- +21 ;
- RECGET1(DFN,IEN,SDBEG,SDEND,SDFLAGS) ;get all recall data for 1 patient ;alb/sat 651 - add SDFLAGS
- +1 ; DFN = (required) patient ID pointer to PATIENT file 2
- +2 ; IEN - (optional) recall ID pointer to RECALL REMINDERS file
- +3 ; all records in date range will be return if IEN=""
- +4 NEW X,Y,%DT
- +5 ;alb/sat 651
- SET SDFLAGS=$GET(SDFLAGS)
- +6 ;check for valid Patient (required)
- +7 IF '$DATA(^DPT(+$GET(DFN),0))
- DO ERR1^SDECERR(-1,"Invalid Patient ID",SDECI,SDECY)
- QUIT
- +8 ;check begin date (optional)
- +9 ;alb/sat 658 use valid FM range instead of 1000101
- IF $GET(SDBEG)'=""
- SET %DT=""
- SET X=$PIECE($GET(SDBEG),"@",1)
- DO ^%DT
- SET SDBEG=Y
- IF Y=-1
- SET SDBEG=1410102
- +10 ;alb/sat 658 use valid FM range instead of 1000101
- IF $GET(SDBEG)=""
- SET SDBEG=1410102
- +11 ;check end date (optional)
- +12 IF $GET(SDEND)'=""
- SET %DT=""
- SET X=$PIECE($GET(SDEND),"@",1)
- DO ^%DT
- SET SDEND=Y
- IF Y=-1
- SET SDEND=$$FMADD^XLFDT($PIECE($$NOW^XLFDT,".",1),-90)
- +13 IF $GET(SDEND)=""
- SET SDEND=$$FMADD^XLFDT($PIECE($$NOW^XLFDT,".",1),-90)
- +14 ;get RECALL REMINDERS data
- +15 SET IEN=$GET(IEN)
- +16 IF IEN'=""
- DO GET1
- QUIT
- +17 IF IEN=""
- FOR
- SET IEN=$ORDER(^SD(403.5,"B",DFN,IEN))
- if IEN=""
- QUIT
- DO GET1
- +18 QUIT
- +19 ;
- RECGETD ;get recall data for date range
- +1 ;alb/sat 651
- SET SDFLAGS=$GET(SDFLAGS)
- +2 IF 'SDSTOP
- Begin DoDot:1
- +3 SET SDI=$SELECT($PIECE(LASTSUB,"|",1)'="":$PIECE(LASTSUB,"|",1)-1,1:SDBEG-1)
- FOR
- SET SDI=$ORDER(^SD(403.5,"D",SDI))
- if SDI'>0
- QUIT
- if SDI>$PIECE(SDEND,".",1)
- QUIT
- Begin DoDot:2
- +4 SET SDDFN=$SELECT($PIECE(LASTSUB,"|",2)'="":$PIECE(LASTSUB,"|",2),1:"")
- SET LASTSUB=""
- FOR
- SET SDDFN=$ORDER(^SD(403.5,"D",SDI,SDDFN))
- if SDDFN'>0
- QUIT
- Begin DoDot:3
- +5 ;alb/sat 651 - add SDFLAGS
- SET DFN=$$GET1^DIQ(403.5,SDDFN_",",.01,"I")
- DO RECGET1(DFN,SDDFN,SDBEG,SDEND,SDFLAGS)
- End DoDot:3
- if SDECI>(MAXREC-1)
- QUIT
- End DoDot:2
- IF SDECI>(MAXREC-1)
- SET SDSUB=SDI_"|"_$SELECT(SDDFN>0:SDDFN,1:"")
- QUIT
- End DoDot:1
- +6 IF +SDSTOP
- Begin DoDot:1
- +7 SET SDI=$SELECT($PIECE(LASTSUB,"|",1)'="":$PIECE(LASTSUB,"|",1)+1,1:SDEND+1)
- FOR
- SET SDI=$ORDER(^SD(403.5,"D",SDI),-1)
- if SDI'>0
- QUIT
- if SDI<$PIECE(SDBEG,".",1)
- QUIT
- Begin DoDot:2
- +8 SET SDDFN=$SELECT($PIECE(LASTSUB,"|",2)'="":$PIECE(LASTSUB,"|",2),1:999999999)
- SET LASTSUB=""
- FOR
- SET SDDFN=$ORDER(^SD(403.5,"D",SDI,SDDFN),-1)
- if SDDFN'>0
- QUIT
- Begin DoDot:3
- +9 ;alb/sat 651 - add SDFLAGS
- SET DFN=$$GET1^DIQ(403.5,SDDFN_",",.01,"I")
- DO RECGET1(DFN,SDDFN,SDBEG,SDEND,SDFLAGS)
- End DoDot:3
- if SDECI>(MAXREC-1)
- QUIT
- End DoDot:2
- IF SDECI>(MAXREC-1)
- SET SDSUB=SDI_"|"_$SELECT(SDDFN>0:SDDFN,1:"")
- QUIT
- End DoDot:1
- +10 QUIT
- RECSDCL ;get recall data for clinics ;alb/sat 658
- +1 NEW SDCL,IEN,SDJ
- +2 ;LASTSUB=clinic | ien
- +3 IF 'SDSTOP
- Begin DoDot:1
- +4 SET SDCL=$SELECT($PIECE(LASTSUB,"|",1)'="":$PIECE(LASTSUB,"|",1),1:"")
- +5 SET SDJ=$SELECT(SDCL'="":$$PF(SDCLL,SDCL,U),1:1)
- +6 FOR SDJ=SDJ:1:$LENGTH(SDCLL,U)
- SET SDCL=$PIECE(SDCLL,U,SDJ)
- Begin DoDot:2
- +7 SET IEN=$SELECT($PIECE(LASTSUB,"|",2)'="":$PIECE(LASTSUB,"|",2)-1,1:"")
- SET LASTSUB=""
- +8 FOR
- SET IEN=$ORDER(^SD(403.5,"E",SDCL,IEN))
- if IEN'>0
- QUIT
- Begin DoDot:3
- +9 SET DFN=""
- DO GET1
- End DoDot:3
- IF SDECI>(MAXREC-1)
- SET SDSUB=SDCL_"|"_IEN
- QUIT
- End DoDot:2
- IF SDECI>(MAXREC-1)
- SET SDSUB=SDCL_"|"_IEN
- QUIT
- End DoDot:1
- +10 IF +SDSTOP
- Begin DoDot:1
- +11 SET SDCL=$SELECT($PIECE(LASTSUB,"|",1)'="":$PIECE(LASTSUB,"|",1),1:"")
- +12 SET SDJ=$SELECT(SDCL'="":$$PF(SDCLL,SDCL,U),1:1)
- +13 FOR SDJ=SDJ:1:$LENGTH(SDCLL,U)
- SET SDCL=$PIECE(SDCLL,U,SDJ)
- Begin DoDot:2
- +14 SET IEN=$SELECT($PIECE(LASTSUB,"|",2)'="":$PIECE(LASTSUB,"|",2)-1,1:999999999)
- SET LASTSUB=""
- +15 FOR
- SET IEN=$ORDER(^SD(403.5,"E",SDCL,IEN),-1)
- if IEN'>0
- QUIT
- Begin DoDot:3
- +16 DO GET1
- End DoDot:3
- IF SDECI>(MAXREC-1)
- SET SDSUB=SDCL_"|"_IEN
- QUIT
- End DoDot:2
- IF SDECI>(MAXREC-1)
- SET SDSUB=SDCL_"|"_IEN
- QUIT
- End DoDot:1
- +17 QUIT
- +18 ;
- RECIEN(SDECY,RECIEN) ;Get recall data for one entry
- RECIEN1 ;
- +1 ;Input is IEN to retieve data on
- +2 NEW ACCESION,APPTLEN,CLINIEN,CLINNAME,COMM,DAPTDT,DATE,DATE1,DATE2,DATE3,DOB,ELIGIEN,ELIGNAME,FASTING
- +3 NEW GAF,GENDER,HRN,IEN,INSTIEN,INSTNAME,NAME,PD,PM,PRIGRP,RRAPPTYP,RRPROVNAME,PTINFO,RRPROVIEN,SSN
- +4 NEW CAT8G,SIMILAR,SUBGRP,SVCCONNP,SVVCCONN,SDBEG,SDEND,SDREC
- +5 NEW PADDRES1,PADDRES2,PADDRES3,PCITY,PSTATE,PCOUNTRY,PZIP4
- +6 NEW SDCNT,SDI,SDSENS,SDSUB,TYPEIEN,TYPENAME,USERIEN,USERNAME,X,Y,%DT
- +7 SET SDSUB=""
- +8 SET SDECY="^TMP(""SDEC52"","_$JOB_",""RECGET"")"
- +9 KILL @SDECY
- +10 SET SDECI=0
- +11 DO HDR
- +12 ;alb/sat 658 use valid FM range instead of 1000101
- SET SDBEG=1410102
- +13 ;alb/sat 658 use valid FM range instead of 9991231
- SET SDEND=4141015
- +14 SET DFN=$$GET1^DIQ(403.5,RECIEN_",",.01,"I")
- IF +DFN
- Begin DoDot:1
- +15 DO RECGETP(DFN)
- +16 DO RECGET1(DFN,RECIEN,SDBEG,SDEND)
- End DoDot:1
- +17 QUIT
- +18 ;
- RECGETP(DFN) ;get patient data
- +1 ;collect demographics
- +2 ;alb/sat 658 PDEMO moved ot SDECU3
- DO PDEMO^SDECU3(.SDDEMO,DFN)
- +3 SET NAME=SDDEMO("NAME")
- +4 SET DOB=SDDEMO("DOB")
- +5 SET GENDER=SDDEMO("GENDER")
- +6 SET HRN=SDDEMO("HRN")
- +7 SET SSN=SDDEMO("SSN")
- +8 SET INSTIEN=SDDEMO("INSTIEN")
- +9 SET INSTNAME=SDDEMO("INSTNAME")
- +10 ;25
- SET PRIGRP=SDDEMO("PRIGRP")
- +11 ;26
- SET ELIGIEN=SDDEMO("ELIGIEN")
- +12 ;27
- SET ELIGNAME=SDDEMO("ELIGNAME")
- +13 ;28
- SET SVVCCONN=SDDEMO("SVCCONN")
- +14 ;29
- SET SVCCONNP=SDDEMO("SVCCONNP")
- +15 ;30
- SET TYPEIEN=SDDEMO("TYPEIEN")
- +16 ;31
- SET TYPENAME=SDDEMO("TYPENAME")
- +17 ;33 - Patient Address line 1
- SET PADDRES1=SDDEMO("PADDRES1")
- +18 ;34 - Patient Address line 2
- SET PADDRES2=SDDEMO("PADDRES2")
- +19 ;35 - Patient Address line 3
- SET PADDRES3=SDDEMO("PADDRES3")
- +20 ;36 - Patient City
- SET PCITY=SDDEMO("PCITY")
- +21 ;37 - Patient state name
- SET PSTATE=SDDEMO("PSTATE")
- +22 ;38 - Patient country name
- SET PCOUNTRY=SDDEMO("PCOUNTRY")
- +23 ;39 - Patient Zip+4
- SET PZIP4=SDDEMO("PZIP+4")
- +24 ;43 - Patient Phone
- SET PTPHONE=SDDEMO("HPHONE")
- +25 ;40
- SET GAF=$$GAF^SDECU2(DFN)
- +26 ;41
- SET SDSENS=$$PTSEC^SDECUTL(DFN)
- +27 ;
- +28 SET BADADD=SDDEMO("BADADD")
- +29 SET OPHONE=SDDEMO("OPHONE")
- +30 SET NOK=SDDEMO("NOK")
- +31 SET KNAME=SDDEMO("KNAME")
- +32 SET KREL=SDDEMO("KREL")
- +33 SET KPHONE=SDDEMO("KPHONE")
- +34 SET KSTREET=SDDEMO("KSTREET")
- +35 SET KSTREET2=SDDEMO("KSTREET2")
- +36 SET KSTREET3=SDDEMO("KSTREET3")
- +37 SET KCITY=SDDEMO("KCITY")
- +38 SET KSTATE=SDDEMO("KSTATE")
- +39 SET KZIP=SDDEMO("KZIP")
- +40 SET NOK2=SDDEMO("NOK2")
- +41 SET K2NAME=SDDEMO("K2NAME")
- +42 SET K2REL=SDDEMO("K2REL")
- +43 SET K2PHONE=SDDEMO("K2PHONE")
- +44 SET K2STREET=SDDEMO("K2STREET")
- +45 SET S2STREE2=SDDEMO("K2STREET2")
- +46 SET K2STREET3=SDDEMO("K2STREET3")
- +47 SET K2CITY=SDDEMO("K2CITY")
- +48 SET K2STATE=SDDEMO("K2STATE")
- +49 SET K2ZIP=SDDEMO("K2ZIP")
- +50 SET PCOUNTY=SDDEMO("PCOUNTY")
- +51 SET PMARITAL=SDDEMO("PMARITAL")
- +52 SET PRELIGION=SDDEMO("PRELIGION")
- +53 SET PTACTIVE=SDDEMO("PTACTIVE")
- +54 SET PTADDRESS1=SDDEMO("PTADDRESS1")
- +55 SET PTADDRESS2=SDDEMO("PTADDRESS2")
- +56 SET PTADDRESS3=SDDEMO("PTADDRESS3")
- +57 SET PTCITY=SDDEMO("PTCITY")
- +58 SET PTSTATE=SDDEMO("PTSTATE")
- +59 SET PTZIP=SDDEMO("PTZIP")
- +60 SET PTZIP4=SDDEMO("PTZIP+4")
- +61 SET PTCOUNTRY=SDDEMO("PTCOUNTRY")
- +62 SET PTCOUNTY=SDDEMO("PTCOUNTY")
- +63 SET PTMPHONE=SDDEMO("PTPHONE")
- +64 SET PTSTART=SDDEMO("PTSTART")
- +65 SET PTEND=SDDEMO("PTEND")
- +66 SET PCELL=SDDEMO("PCELL")
- +67 SET PPAGER=SDDEMO("PPAGER")
- +68 SET PEMAIL=SDDEMO("PEMAIL")
- +69 SET PFFFF=SDDEMO("PF_FFF")
- +70 SET PFVCD=SDDEMO("PF_VCD")
- +71 SET PFNATIONAL=SDDEMO("PFNATIONAL")
- +72 SET PFLOCAL=SDDEMO("PFLOCAL")
- +73 SET SUBGRP=$GET(SDDEMO("SUBGRP"))
- +74 SET CAT8G=(PRIGRP="GROUP 8")&(SUBGRP="g")
- +75 SET SIMILAR=SDDEMO("SIMILAR")
- +76 QUIT
- +77 ;
- GET1 ;
- +1 NEW PRACE,PRACEN,PETH,PETHN,PRHBLOC,PROVNAME
- +2 KILL SDDATA,SDMSG
- +3 ;alb/sat 651
- SET SDFLAGS=$GET(SDFLAGS)
- +4 SET PRHBLOC=0
- +5 DO GETS^DIQ(403.5,IEN,"**","IE","SDDATA","SDMSG")
- +6 ; if there is an error (SDMSG), clean up dangling cross references - SD*827
- +7 IF $DATA(SDMSG)
- IF '$DATA(^SD(403.5,IEN))
- Begin DoDot:1
- +8 NEW D0,I,STR,X,N3,N4
- +9 SET D0=IEN
- DO KXREF^SDRRTSK
- End DoDot:1
- +10 ; quit if there is an error
- +11 if $DATA(SDMSG)
- QUIT
- +12 SET DATE=SDDATA(403.5,IEN_",",5,"I")
- +13 if (DATE<SDBEG)!(DATE>SDEND)
- QUIT
- +14 ;alb/sat 658 get Patient
- if $GET(DFN)=""
- SET DFN=SDDATA(403.5,IEN_",",.01,"I")
- +15 ;get PATIENT data
- +16 DO RECGETP(DFN)
- +17 ; 10. Accession # (free-text 1-25 characters)
- SET ACCESION=SDDATA(403.5,IEN_",",2,"E")
- +18 ; 11. COMMENT (free-text 1-80 characters)
- SET COMM=SDDATA(403.5,IEN_",",2.5,"E")
- +19 ; 12. FASTING/NON-FASTING
- SET FASTING=SDDATA(403.5,IEN_",",2.6,"I")
- +20 ; 13. Test/App pointer to RECALL REMINDERS APPT TYPE file 403.51
- SET RRAPPTYP=SDDATA(403.5,IEN_",",3,"I")
- +21 ; 14. Pointer to RECALL REMINDERS PROVIDERS file 403.54
- SET RRPROVIEN=SDDATA(403.5,IEN_",",4,"I")
- +22 ; 15. Provider NAME of Provider in RECALL REMINDERS PROVIDERS file
- SET PROVNAME=SDDATA(403.5,IEN_",",4,"E")
- +23 ; 16. Clinic pointer to HOSPITAL LOCATION file
- SET CLINIEN=SDDATA(403.5,IEN_",",4.5,"I")
- +24 ; do not return if no clinic defined ;alb/sat 651
- IF CLINIEN=""
- IF +$EXTRACT(SDFLAGS)
- QUIT
- +25 ; 17. Clinic NAME from HOSPITAL LOCATION file
- SET CLINNAME=SDDATA(403.5,IEN_",",4.5,"E")
- +26 ;check OOS?
- IF CLINIEN'=""
- IF $$GET1^DIQ(44,CLINIEN_",",50.01,"I")=1
- QUIT
- +27 if CLINIEN'=""
- SET PRHBLOC=$SELECT($$GET1^DIQ(44,+CLINIEN_",",2500,"I")="Y":1,1:0)
- +28 ; 18. Length of Appointment numeric between 10 and 120
- SET APPTLEN=SDDATA(403.5,IEN_",",4.7,"E")
- +29 ;19. Recall Date in external format (no time)
- SET DATE=SDDATA(403.5,IEN_",",5,"I")
- SET DATE=$$FMTE^XLFDT(DATE)
- +30 ;20. Recall Date (Per patient) in external format (no time)
- SET DATE1=SDDATA(403.5,IEN_",",5.5,"I")
- SET DATE1=$$FMTE^XLFDT(DATE1)
- +31 ;21. Date Reminder Sent in external format (no time)
- SET DAPTDT=SDDATA(403.5,IEN_",",6,"I")
- SET DAPTDT=$$FMTE^XLFDT(DAPTDT)
- +32 ; 22. User Who Entered Recall pointer to NEW PERSON file
- SET USERIEN=SDDATA(403.5,IEN_",",7,"I")
- +33 ; 23. User Who Entered Recall NAME from NEW PERSON file
- SET USERNAME=SDDATA(403.5,IEN_",",7,"E")
- +34 ; 32. DATE/TIME RECALL ADDED
- SET DATE3=SDDATA(403.5,IEN_",",7.5,"E")
- +35 if DATE3=""
- SET DATE3=DATE
- +36 ;24. Second Print Date in external format (no time)
- SET DATE2=SDDATA(403.5,IEN_",",8,"I")
- SET DATE2=$$FMTE^XLFDT(DATE2)
- +37 DO RACELST^SDECU2(DFN,.PRACE,.PRACEN)
- +38 ;get ethnicity
- DO ETH^SDECU2(DFN,.PETH,.PETHN)
- +39 ; 9
- SET SDTMP=IEN_U_DFN_U_NAME_U_HRN_U_DOB_U_SSN_U_GENDER_U_INSTIEN_U_INSTNAME
- +40 ;13
- SET SDTMP=SDTMP_U_ACCESION_U_COMM_U_FASTING_U_RRAPPTYP
- +41 ;18
- SET SDTMP=SDTMP_U_RRPROVIEN_U_PROVNAME_U_CLINIEN_U_CLINNAME_U_APPTLEN
- +42 ;24
- SET SDTMP=SDTMP_U_DATE_U_DATE1_U_DAPTDT_U_USERIEN_U_USERNAME_U_DATE2
- +43 ;29
- SET SDTMP=SDTMP_U_PRIGRP_U_ELIGIEN_U_ELIGNAME_U_SVVCCONN_U_SVCCONNP
- +44 ;35
- SET SDTMP=SDTMP_U_TYPEIEN_U_TYPENAME_U_DATE3_U_PADDRES1_U_PADDRES2_U_PADDRES3
- +45 ;41
- SET SDTMP=SDTMP_U_PCITY_U_PSTATE_U_PCOUNTRY_U_PZIP4_U_GAF_U_SDSENS
- +46 ;48
- SET SDTMP=SDTMP_U_U_PTPHONE_U_PRACE_U_PRACEN_U_PETH_U_PETHN_U_PRHBLOC
- +47 SET $PIECE(SDTMP,U,49)=BADADD
- +48 SET $PIECE(SDTMP,U,50)=OPHONE
- +49 SET $PIECE(SDTMP,U,51)=NOK
- +50 SET $PIECE(SDTMP,U,52)=KNAME
- +51 SET $PIECE(SDTMP,U,53)=KREL
- +52 SET $PIECE(SDTMP,U,54)=KPHONE
- +53 SET $PIECE(SDTMP,U,55)=KSTREET
- +54 SET $PIECE(SDTMP,U,56)=KSTREET2
- +55 SET $PIECE(SDTMP,U,57)=KSTREET3
- +56 SET $PIECE(SDTMP,U,58)=KCITY
- +57 SET $PIECE(SDTMP,U,59)=KSTATE
- +58 SET $PIECE(SDTMP,U,60)=KZIP
- +59 SET $PIECE(SDTMP,U,61)=NOK2
- +60 SET $PIECE(SDTMP,U,62)=K2NAME
- +61 SET $PIECE(SDTMP,U,63)=K2REL
- +62 SET $PIECE(SDTMP,U,64)=K2PHONE
- +63 SET $PIECE(SDTMP,U,65)=K2STREET
- +64 SET $PIECE(SDTMP,U,66)=S2STREE2
- +65 SET $PIECE(SDTMP,U,67)=K2STREET3
- +66 SET $PIECE(SDTMP,U,68)=K2CITY
- +67 SET $PIECE(SDTMP,U,69)=K2STATE
- +68 SET $PIECE(SDTMP,U,70)=K2ZIP
- +69 SET $PIECE(SDTMP,U,71)=PCOUNTY
- +70 SET $PIECE(SDTMP,U,72)=PMARITAL
- +71 SET $PIECE(SDTMP,U,73)=PRELIGION
- +72 SET $PIECE(SDTMP,U,74)=PTACTIVE
- +73 SET $PIECE(SDTMP,U,75)=PTADDRESS1
- +74 SET $PIECE(SDTMP,U,76)=PTADDRESS2
- +75 SET $PIECE(SDTMP,U,77)=PTADDRESS3
- +76 SET $PIECE(SDTMP,U,78)=PTCITY
- +77 SET $PIECE(SDTMP,U,79)=PTSTATE
- +78 SET $PIECE(SDTMP,U,80)=PTZIP
- +79 SET $PIECE(SDTMP,U,81)=PTZIP4
- +80 SET $PIECE(SDTMP,U,82)=PTCOUNTRY
- +81 SET $PIECE(SDTMP,U,83)=PTCOUNTY
- +82 SET $PIECE(SDTMP,U,84)=PTMPHONE
- +83 SET $PIECE(SDTMP,U,85)=PTSTART
- +84 SET $PIECE(SDTMP,U,86)=PTEND
- +85 SET $PIECE(SDTMP,U,87)=PCELL
- +86 SET $PIECE(SDTMP,U,88)=PPAGER
- +87 SET $PIECE(SDTMP,U,89)=PEMAIL
- +88 SET $PIECE(SDTMP,U,90)=PFFFF
- +89 SET $PIECE(SDTMP,U,91)=PFVCD
- +90 SET $PIECE(SDTMP,U,92)=PFNATIONAL
- +91 SET $PIECE(SDTMP,U,93)=PFLOCAL
- +92 SET $PIECE(SDTMP,U,94)=SUBGRP
- +93 SET $PIECE(SDTMP,U,95)=CAT8G
- +94 SET $PIECE(SDTMP,U,96)=SIMILAR
- +95 ; SDECALL_U_SDECLET 97^98 GET CALL AND LETTER DATA ;CT - *745 5/12/20
- SET SDREC=$$RECALL^SDECAR1A(DFN,RECIEN)
- SET $PIECE(SDTMP,U,97)=$PIECE(SDREC,U,1)
- SET $PIECE(SDTMP,U,98)=$PIECE(SDREC,U,2)
- +96 ;813 CEMAIL
- SET $PIECE(SDTMP,U,99)=$PIECE(SDREC,U,3)
- +97 ;813 CTEXT
- SET $PIECE(SDTMP,U,100)=$PIECE(SDREC,U,4)
- +98 ;813 CSEC
- SET $PIECE(SDTMP,U,101)=$PIECE(SDREC,U,5)
- +99 SET SDECI=SDECI+1
- SET @SDECY@(SDECI)=SDTMP_$CHAR(30)
- +100 QUIT
- +101 ;
- PF(STRING,SUB,DI) ;piece find
- +1 NEW SDI
- +2 SET STRING=$GET(STRING)
- if STRING=""
- QUIT ""
- +3 SET SUB=$GET(SUB)
- if SUB=""
- QUIT ""
- +4 SET DI=$GET(DI)
- if DI=""
- SET DI=U
- +5 FOR SDI=1:1:$LENGTH(STRING,DI)
- if $PIECE(STRING,DI,SDI)=SUB
- QUIT
- +6 QUIT SDI