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

SDECCON.m

Go to the documentation of this file.
SDECCON ;SPFO/DMR,MGD,RRM,TAW - SCHEDULING ENHANCEMENTS VSE CONTACT API ;OCT 16, 2025
 ;;5.3;Scheduling;**669,686,781,785,827,922**;Aug 13 1993;Build 7
 ;
 ;This API provides SDEC CONTACT(#409.86)file information to the VSE VS GUI.
 ; 3/6/18 - wtc/zeb Added new cross-reference for audit statistics compiler.  Patch 686
 ;
 Q
DISPLAY(RTU,DFN,CLN,PDT,REQT,SER) ;
 ; RPC: SDEC CONTACT DISPLAY
 Q:'$G(DFN)
 Q:'$G(PDT)
 Q:'$D(REQT)
 S (CC,CC1,CC2,REC)=""
 ;
 S PDT=$$NETTOFM^SDECDATE(PDT,"N","N") ;CONVERT TO FILEMAN DATE
 ;
 S CC="" F  S CC=$O(^SDEC(409.86,"B",DFN,CC)) Q:CC=""  D
 .S REC="" S REC=^SDEC(409.86,CC,0)
 .Q:PDT'=$P($G(REC),"^",3)
 .I $G(CLN)'="" Q:$G(CLN)'=$P($G(REC),"^",2)
 .I $G(SER)'="" Q:$G(SER)'=$P($G(REC),"^",6)
 .Q:REQT'=$P($G(REC),"^",4)
 .S RTU=CC_"^"_REC
 .Q
 D EXIT
 Q
 ;
DISPLAY1(RTU,REQT,RIEN) ;
 ; RPC: SDEC CONTACT DISPLAY SINGLE
 ; INPUT: REQT = Request Type: SDEC CONTACT, REQUEST/CONSULTATION or SDEC APPT REQUEST
 ;        RIEN = IEN of the record of interest
 ; OUTPUT:
 ;        1st ^ Piece = IEN of VistA record identified
 ;        2nd ^ Piece = 0 node of File #409.86 for the identified record
 ;
 I $G(RTU)="" S RTU=0
 Q:REQT=""!("^R^A^RTC^C^P^V^"'[("^"_REQT_"^"))
 Q:RIEN=""
 ;
 S (CC,ROOT,REC,GMR,AR40985,RECALL)=""
 ; $O backwards to get the last entry entered if there are more than one entry in the x-ref
 S CC=$O(^SDEC(409.86,"SRP",RIEN,""),-1)
 I CC<1 D EXIT Q
 S ROOT="" S ROOT=$P(^SDEC(409.86,CC,0),"^",7)
 Q:$P(ROOT,";",1)'=RIEN
 ; Load 0 node for return
 S REC="" S REC=^SDEC(409.86,CC,0)
 ; Check for SDEC CONTACT
 I REQT="R" D
 .S RECALL="" S RECALL=$G(^SD(403.5,RIEN,0))
 .Q:RECALL=""
 .Q:$P(REC,"^",1)'=$P(RECALL,"^",1)
 .S RTU=CC_"^"_REC
 .Q
 ; Check for SDEC APPT REQUEST
 I (REQT="A")!(REQT="RTC")!(REQT="V") D
 .S AR40985="" S AR40985=$G(^SDEC(409.85,RIEN,0))
 .Q:AR40985=""
 .Q:$P(REC,"^",1)'=$P(AR40985,"^",1)
 .S RTU=CC_"^"_REC
 .Q
 ; Check for REQUEST/CONSULTATION
 I REQT="C"!(REQT="P") D
 .S GMR="" S GMR=$G(^GMR(123,RIEN,0))
 .Q:GMR=""
 .Q:$P(REC,"^",1)'=$P(GMR,"^",2)
 .Q:$P($G(REC),"^",1)'=$P($G(GMR),"^",2)
 .S RTU=CC_"^"_REC
 .Q
 D EXIT
 Q
 ;
DISMULT(RTT,CIEN) ;
 ; RPC: SDEC CONTACT MULTI-DISPLAY
 Q:'$G(CIEN)
 ;
 S (CC1,CC2,REC1,REC2,RTT,ENDT)=""
 ;
 S CC2="" F  S CC2=$O(^SDEC(409.86,CIEN,1,CC2)) Q:CC2=""  D
 .S REC2="" S REC2=$G(^SDEC(409.86,CIEN,1,CC2,1)) Q:REC2=""  D
 ..S ENDT="" S ENDT=$P($G(^SDEC(409.86,CIEN,1,CC2,0)),"^",1)
 ..S (ENTU,ENTUN)="" S ENTUN=$P(REC2,"^",5) I ENTUN>0 D
 ...S ENTU=$$GET1^DIQ(200,ENTUN,.01,"E")
 ..S RTT=RTT_CC1_"^"_REC2_"^"_ENTU_"^"_ENDT_";"
 ..Q
 D EXIT
 Q
 ;
NEW(RET,DFN,CLI,DTP,REQT,SRV,DTCON,CONT,COM,DTENT,RIEN) ;
 ; RPC: SDEC CONTACT NEW
 S RET=0
 Q:'$G(DFN)
 ;Q:'$G(DTP)
 Q:'$D(REQT)
 Q:'$G(DTCON)
 Q:'$D(CONT)
 Q:'$G(DTENT)
 Q:'$G(RIEN)
 I '$D(COM) S COM=""
 I '$G(CLI) S CLI=""
 I '$G(SRV) S SRV=""
 ;
 ;  Call SDES2 Add Contact RPC code
 N ERRORS,DFN,CLINIC,PREFDATE,REQTYPE,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,DTTMENTERED,REQUESTIEN,NEWCONTACT,RESULT,REQTYP
 N NEWIEN,APPTREQTYPE,FDA,NEWCONTIEN,SUBIENS,CONTACTIEN,SEQUENCE,LEFTMSG,NEWCONTATTMTIEN,VALID,DIERR,CONTACT,DTMENTERED
 ;
 ; Build CONTACT array
 S CONTACT("COMMENTS")=COM
 S CONTACT("CONTACTTYPE")=CONT
 S CONTACT("DTTMENTERED")=$$FMTISO^SDAMUTDT(DTENT)
 S CONTACT("DTTMOFCONTACT")=$$FMTISO^SDAMUTDT(DTCON)
 S CONTACT("LEFTMESSAGE")=0
 S CONTACT("REQTYPE")=REQT
 S CONTACT("REQUESTIEN")=RIEN
 ;
 D REQUESTINFO^SDES2CONTACTS(.ERRORS,.CONTACT,.APPTREQTYPE,.REQUESTIEN,.REQTYP,.DFN,.CLINIC,.PREFDATE)
 I $D(ERRORS) Q
 ;
 D ASSIGNVARS^SDES2CONTACTS(.CONTACT,.REQTYPE,.DTTMOFCONTACT,.COMMENTS,.DTMENTERED,.LEFTMSG)
 D VALIDATE^SDES2CONTACTS(.ERRORS,REQTYPE,.DTTMOFCONTACT,COMMENTS,.DTTMENTERED,LEFTMSG,CONTACTTYPE,CLINIC)
 I $D(ERRORS) Q
 ;
 D GETCONTACTIEN^SDES2CONTACTS(.CONTACTIEN,APPTREQTYPE)
 D:(CONTACTIEN'="") UPDATECONTACT^SDES2CONTACTS(.RESULT,.FDA,CONTACTIEN,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,DUZ,DTTMENTERED,LEFTMSG)
 D:(CONTACTIEN="") CREATECONTACT^SDES2CONTACTS(.RESULT,.FDA,DFN,CONTACTIEN,CLINIC,PREFDATE,REQTYPE,APPTREQTYPE,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,DUZ,DTTMENTERED,LEFTMSG)
 D SAVECONTACT^SDES2CONTACTS(.ERRORS,.RESULT,.FDA,.NEWIEN)
 I $D(ERRORS) Q
 ;End of SDES2 code
 ;
 S RET=1
 D EXIT
 Q
SEQ(RE1,DF1,CL1,PDATE,RTYPE,SRR) ;
 ; RPC: SDEC CONTACT SEQUENCE
 Q:'$G(DF1)
 Q:'$G(PDATE)
 I '$G(CL1) S CL1=""
 I '$G(SRR) S SRR=""
 ;
 S (JJ,JJ1,RCD,SQU,DF2)=""
 S PDATE=$$NETTOFM^SDECDATE(PDATE,"N","N")
 ;
 S JJ="" F  S JJ=$O(^SDEC(409.86,"B",DF1,JJ)) Q:JJ=""  D
 .S RCD="" S RCD=$G(^SDEC(409.86,JJ,0)) Q:RCD=""  D
 ..S SQU="" S SQU=$P($G(^SDEC(409.86,JJ,1,0)),"^",3) D
 ...Q:$G(SQU)=""
 ...Q:PDATE'=$P($G(RCD),"^",3)
 ...Q:RTYPE'=$P($G(RCD),"^",4)
 ...I $P($G(RCD),"^",2)=CL1 D
 ....S $P(^SDEC(409.86,JJ,0),"^",5)=SQU+1
 ....S RE1=SQU+1
 ....Q
 ...I $P($G(RCD),"^",6)=SRR D
 ....S $P(^SDEC(409.86,JJ,0),"^",5)=SQU+1
 ....S RE1=SQU+1
 ....Q
 D EXIT
 Q
 ;
SEQ1(RTU,REQT,RIEN) ;
 ; RPC: SDEC CONTACT SEQUENCE SINGLE
 ; INPUT: REQT = Request Type: SDEC CONTACT, REQUEST/CONSULTATION or SDEC APPT REQUEST
 ;        RIEN = IEN of the record of interest
 ; OUTPUT:
 ;        RTU = Newly created contact sequence number
 I $G(RTU)="" S RTU=0
 Q:REQT=""!("^R^A^RTC^C^P^V^"'[("^"_REQT_"^"))
 Q:RIEN=""
 ;
 ; $O backwards to get the last entry entered if there are more than one entry in the x-ref
 S CC=$O(^SDEC(409.86,"SRP",RIEN,""),-1)
 I CC<1 D EXIT Q
 S RCD=$G(^SDEC(409.86,CC,0)) Q:RCD=""
 S SQU="" S SQU=$P($G(^SDEC(409.86,CC,1,0)),"^",3)
 Q:$G(SQU)=""
 Q:REQT'=$P($G(RCD),"^",4)
 S RE1=SQU+1
 S $P(^SDEC(409.86,CC,0),"^",5)=RE1
 Q
 ;
UPDATE(RTT,IEN,CONDT,CTYPE,COMM,DTEN) ;
 ; RPC: SDEC CONTACT UPDATE
 Q:'$G(IEN)
 Q:'$G(CONDT)
 Q:'$D(CTYPE)
 I '$D(COMM) S COMM=""
 I '$G(DTEN) S DTEN=""
 ;
  ;  Call SDES2 Add Contact RPC code
 N ERRORS,DFN,CLINIC,PREFDATE,REQTYPE,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,DTTMENTERED,REQUESTIEN,NEWCONTACT,RESULT,REQTYP
 N NEWIEN,APPTREQTYPE,FDA,NEWCONTIEN,SUBIENS,CONTACTIEN,SEQUENCE,LEFTMSG,NEWCONTATTMTIEN,VALID,DIERR,CONTACT,DTMENTERED
 ;
 N SDCONREC
 S SDCONREC=$G(^SDEC(409.86,IEN,0))
 ;
 ; Build CONTACT array
 S CONTACT("COMMENTS")=COMM
 S CONTACT("CONTACTTYPE")=CTYPE
 I DTEN="" S DTEN=$$NOW^XLFDT()
 S CONTACT("DTTMENTERED")=$$FMTISO^SDAMUTDT(DTEN)
 S CONTACT("DTTMOFCONTACT")=$$FMTISO^SDAMUTDT(CONDT)
 S CONTACT("REQTYPE")=$P(SDCONREC,"^",4)
 S CONTACT("REQUESTIEN")=$P($P(SDCONREC,"^",7),";",1)
 ;
 D REQUESTINFO^SDES2CONTACTS(.ERRORS,.CONTACT,.APPTREQTYPE,.REQUESTIEN,.REQTYP,.DFN,.CLINIC,.PREFDATE)
 I $D(ERRORS) Q
 ;
 D ASSIGNVARS^SDES2CONTACTS(.CONTACT,.REQTYPE,.DTTMOFCONTACT,.COMMENTS,.DTMENTERED,.LEFTMSG)
 D VALIDATE^SDES2CONTACTS(.ERRORS,REQTYPE,.DTTMOFCONTACT,COMMENTS,.DTTMENTERED,LEFTMSG,CONTACTTYPE,CLINIC)
 I $D(ERRORS) Q
 ;
 D GETCONTACTIEN^SDES2CONTACTS(.CONTACTIEN,APPTREQTYPE)
 D:(CONTACTIEN'="") UPDATECONTACT^SDES2CONTACTS(.RESULT,.FDA,CONTACTIEN,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,DUZ,DTTMENTERED,LEFTMSG)
 D:(CONTACTIEN="") CREATECONTACT^SDES2CONTACTS(.RESULT,.FDA,DFN,CONTACTIEN,CLINIC,PREFDATE,REQTYPE,APPTREQTYPE,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,DUZ,DTTMENTERED,LEFTMSG)
 D SAVECONTACT^SDES2CONTACTS(.ERRORS,.RESULT,.FDA,.NEWIEN)
 I $D(ERRORS) Q
 ;End of SDES2 code
 D EXIT
 Q
GETSTC(RET,CLIEN) ;
 ; RPC: SDEC CONTACT STOP CODE
 Q:CLIEN=""
 ;
 ;CLIEN=Clinic IEN
 ;HLF0=Hospital Location File 0 node
 ;SNUM=Stopc Code IEN [0,7]
 ;STPC=Stop Code 40.7
 ;CSNUM=Credit Stop IEN [0,18]
 ;CSTPC=Credit Stop Code 40.7
 ;
 S (HLF0,SNUM,STPC,CSNUM,CSTPC,CNUM)=""
 ;
 S HLF0=$G(^SC(CLIEN,0)) I HLF0'="" D
 .S SNUM=$P($G(HLF0),"^",7) I SNUM'="" D
 ..S STPC=$$GET1^DIQ(40.7,SNUM,1)
 .S CNUM=$P($G(HLF0),"^",18) I CNUM'="" D
 ..S CSTPC=$$GET1^DIQ(40.7,CNUM,1)
 S RET=STPC_"^"_CSTPC
 K HLF0,SNUM,STPC,CSNUM,CSTPC,CNUM
 Q
EXIT ;
 K MULT,CC,CCC,COUNT,COMM,DTEN,ENDT,AR40985,RECALL,ROOT,GMR
 K JJ,JJ1,RCD,SQU,DF2,DFN2,CC1,CC2,RCD,SQU,ENTU,ENTUN
 K REC,REC1,REC2,ENDT,MULTN,CLN,PDT,REQT,SER,RIEN,SDRIEN
 Q