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

SDES2EDITTEMPADD.m

Go to the documentation of this file.
SDES2EDITTEMPADD ;ALB/JAS,JAS - SDES2 EDIT TEMP ADDRESS ;MAR 25,2025
 ;;5.3;Scheduling;**901,904**;Aug 13, 1993;Build 1
 ;;Per VHA Directive 6402, this routine should not be modified
 ;
 ;---------------------------------------------------------------
 ; RPC: SDES2 EDIT TEMP ADDRESS
 ;
 ; SDCONTEXT INPUT
 ;
 ;S SDCONTEXT("ACHERON AUDIT ID") = Up to 40 Character unique ID number. Ex: 11d9dcc6-c6a2-4785-8031-8261576fca37
 ;S SDCONTEXT("USER DUZ") = The DUZ of the user taking action in the calling application.
 ;S SDCONTEXT("USER SECID") = The SECID of the user taking action in the calling application.
 ;S SDCONTEXT("PATIENT DFN") = The DFN/IEN of the target patient from the calling application.
 ;S SDCONTEXT("PATIENT ICN") = The ICN of the target patient from the calling application.
 ;
 ; TEMPADDRESS INPUT
 ;
 ;S TEMPADDRESS("PATIENT IEN")=""           REQ
 ;S TEMPADDRESS("ACTIVE FLAG")=""           REQ
 ;S TEMPADDRESS("DELETE FLAG")=""           OPT (Defaults to False)
 ;S TEMPADDRESS("STREET LINE ONE")=""       OPT (Required if Active Flag is True)
 ;S TEMPADDRESS("STREET LINE TWO")=""       OPT
 ;S TEMPADDRESS("STREET LINE THREE")=""     OPT
 ;S TEMPADDRESS("ZIP CODE")=""              OPT (Required if Active Flag is True)
 ;S TEMPADDRESS("CITY")=""                  OPT (Required if Active Flag is True)
 ;S TEMPADDRESS("STATE")=""                 OPT (Required if Active Flag is True)
 ;S TEMPADDRESS("COUNTY")=""                OPT
 ;S TEMPADDRESS("COUNTRY")=""               OPT (Required if Active Flag is True)
 ;S TEMPADDRESS("PHONE")=""                 OPT
 ;S TEMPADDRESS("START DATE")=""            OPT (Required if Active Flag is True)
 ;S TEMPADDRESS("END DATE")=""              OPT
 ;
 Q
 ;
EDITTEMP(JSON,SDCONTEXT,TEMPADDRESS) ;
 N ERRORS,RETURN,TEMPMSG
 S TEMPMSG=""
 ;
 D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
 I $D(ERRORS) S ERRORS("TemporaryAddress",1)="" D BUILDJSON^SDES2JSON(.JSON,.ERRORS) Q
 ;
 D VALIDATEADD(.ERRORS,.TEMPADDRESS)
 I $D(ERRORS) S ERRORS("TemporaryAddress",1)="" D BUILDJSON^SDES2JSON(.JSON,.ERRORS) Q
 ;
 D EDITTEMPADD(.ERRORS,.TEMPADDRESS,.TEMPMSG)
 I $D(ERRORS) S ERRORS("TemporaryAddress",1)="" D BUILDJSON^SDES2JSON(.JSON,.ERRORS) Q
 ;
 S RETURN("TemporaryAddress")=TEMPMSG
 D BUILDJSON^SDES2JSON(.JSON,.RETURN)
 Q
 ;
VALIDATEADD(ERRORS,TEMPADDRESS) ; Input array validation
 N PATDFN,VAL
 ;
 ; Validate patient
 D VALFILEIEN^SDES2VALUTIL(.VAL,.ERRORS,2,$G(TEMPADDRESS("PATIENT IEN")),1,,1,2) Q:$D(ERRORS)
 S PATDFN=TEMPADDRESS("PATIENT IEN")
 ;
 ; Validate flags
 I $G(TEMPADDRESS("ACTIVE FLAG"))'=1&($G(TEMPADDRESS("ACTIVE FLAG"))'=0) D ERRLOG^SDES2JSON(.ERRORS,647) Q
 I $G(TEMPADDRESS("ACTIVE FLAG")),$G(TEMPADDRESS("DELETE FLAG")) D ERRLOG^SDES2JSON(.ERRORS,632) Q
 Q:'$G(TEMPADDRESS("ACTIVE FLAG"))
 ;
 ; Validate address
 I $G(TEMPADDRESS("STREET LINE ONE"))="" D ERRLOG^SDES2JSON(.ERRORS,633) Q
 I $L(TEMPADDRESS("STREET LINE ONE"))<3!($L(TEMPADDRESS("STREET LINE ONE"))>30) D ERRLOG^SDES2JSON(.ERRORS,634) Q
 I $G(TEMPADDRESS("STREET LINE TWO"))'="",($L(TEMPADDRESS("STREET LINE TWO"))<3!($L(TEMPADDRESS("STREET LINE TWO"))>30)) D ERRLOG^SDES2JSON(.ERRORS,635) Q
 I $G(TEMPADDRESS("STREET LINE THREE"))'="",($L(TEMPADDRESS("STREET LINE THREE"))<3!($L(TEMPADDRESS("STREET LINE THREE"))>30)) D ERRLOG^SDES2JSON(.ERRORS,650) Q
 I $G(TEMPADDRESS("CITY"))="" D ERRLOG^SDES2JSON(.ERRORS,636) Q
 I $L(TEMPADDRESS("CITY"))<3!($L(TEMPADDRESS("CITY"))>30) D ERRLOG^SDES2JSON(.ERRORS,637) Q
 I $G(TEMPADDRESS("STATE"))="" D ERRLOG^SDES2JSON(.ERRORS,638) Q
 I '$D(^DIC(5,"B",TEMPADDRESS("STATE")))&('$D(^DIC(5,"C",TEMPADDRESS("STATE")))) D ERRLOG^SDES2JSON(.ERRORS,639) Q
 ; Find State IEN
 I $D(^DIC(5,"B",TEMPADDRESS("STATE"))) S TEMPADDRESS("STATE IEN")=$O(^DIC(5,"B",TEMPADDRESS("STATE"),0))
 I '$G(TEMPADDRESS("STATE IEN")) S TEMPADDRESS("STATE IEN")=$O(^DIC(5,"C",TEMPADDRESS("STATE"),0))
 I $G(TEMPADDRESS("ZIP CODE"))="" D ERRLOG^SDES2JSON(.ERRORS,640) Q
 I TEMPADDRESS("ZIP CODE")'?5N&(TEMPADDRESS("ZIP CODE")'?5N0.1P4N) D ERRLOG^SDES2JSON(.ERRORS,641) Q
 S TEMPADDRESS("ZIP CODE")=$TR(TEMPADDRESS("ZIP CODE"),"-","")
 ;I $G(TEMPADDRESS("COUNTY"))="" D ERRLOG^SDES2JSON(.ERRORS,642) Q ; Not currently required
 I $L($G(TEMPADDRESS("COUNTY")))>30 D ERRLOG^SDES2JSON(.ERRORS,643) Q
 ; Find County IEN
 I $L($G(TEMPADDRESS("COUNTY"))) D
 . I '$D(^DIC(5,TEMPADDRESS("STATE IEN"),1,"B",TEMPADDRESS("COUNTY"))) D ERRLOG^SDES2JSON(.ERRORS,651) Q
 . N DIC,X,Y,Z0 S Z0=TEMPADDRESS("STATE IEN")
 . S DIC="^DIC(5,Z0,1,",DIC(0)="QMO",X=TEMPADDRESS("COUNTY") D ^DIC S X=+Y
 . S TEMPADDRESS("COUNTY IEN")=X K DIC,X,Y,Z0
 Q:$D(ERRORS)
 I $G(TEMPADDRESS("COUNTRY"))="" D ERRLOG^SDES2JSON(.ERRORS,644) Q
 I '$D(^HL(779.004,"B",TEMPADDRESS("COUNTRY")))&('$D(^HL(779.004,"C",TEMPADDRESS("COUNTRY")))) D ERRLOG^SDES2JSON(.ERRORS,645) Q
 ; Find Country IEN
 I $D(^HL(779.004,"C",TEMPADDRESS("COUNTRY"))) S TEMPADDRESS("COUNTRY IEN")=$O(^HL(779.004,"C",TEMPADDRESS("COUNTRY"),0))
 I '$G(TEMPADDRESS("COUNTRY IEN")) S TEMPADDRESS("COUNTRY IEN")=$O(^HL(779.004,"B",TEMPADDRESS("COUNTRY"),0))
 I $L($G(TEMPADDRESS("PHONE"))),$L(TEMPADDRESS("PHONE"))<4!($L(TEMPADDRESS("PHONE"))>20) D ERRLOG^SDES2JSON(.ERRORS,646) Q
 ;
 ; Validate dates
 S TEMPADDRESS("STARTDT")=$$VALISODTTM^SDES2VALISODTTM(.ERRORS,$G(TEMPADDRESS("START DATE")),,1,9,11) Q:$D(ERRORS)
 S TEMPADDRESS("ENDDT")=$$VALISODTTM^SDES2VALISODTTM(.ERRORS,$G(TEMPADDRESS("END DATE")),,,,12) Q:$D(ERRORS)
 I TEMPADDRESS("ENDDT"),(TEMPADDRESS("STARTDT")>TEMPADDRESS("ENDDT")) D ERRLOG^SDES2JSON(.ERRORS,13) Q
 ;
 Q
 ;
EDITTEMPADD(ERRORS,TEMPADDRESS,TEMPMSG) ;
 ;
 I $G(TEMPADDRESS("ACTIVE FLAG")) D CRTTEMPADD(.ERRORS,.TEMPADDRESS,.TEMPMSG) Q
 D DELTEMPADD(.ERRORS,.TEMPADDRESS,.TEMPMSG)
 Q
 ;
CRTTEMPADD(ERRORS,TEMPADDRESS,TEMPMSG) ;
 N FDA,FDAERR,IENS
 S IENS=TEMPADDRESS("PATIENT IEN")_","
 ;
 S FDA(2,IENS,.12105)="Y"
 S FDA(2,IENS,.1211)=$G(TEMPADDRESS("STREET LINE ONE"))
 S FDA(2,IENS,.1212)=$G(TEMPADDRESS("STREET LINE TWO"))
 S FDA(2,IENS,.1213)=$G(TEMPADDRESS("STREET LINE THREE"))
 S FDA(2,IENS,.1214)=$G(TEMPADDRESS("CITY"))
 S FDA(2,IENS,.1215)=$G(TEMPADDRESS("STATE IEN"))
 S FDA(2,IENS,.1216)=$E($G(TEMPADDRESS("ZIP CODE")),1,5)
 I $G(TEMPADDRESS("COUNTY IEN"))'="" S FDA(2,IENS,.12111)=TEMPADDRESS("COUNTY IEN")
 S FDA(2,IENS,.12112)=$G(TEMPADDRESS("ZIP CODE"))
 S FDA(2,IENS,.1217)=$G(TEMPADDRESS("STARTDT"))
 S FDA(2,IENS,.1218)=$G(TEMPADDRESS("ENDDT"))
 I $G(TEMPADDRESS("PHONE"))'="" S FDA(2,IENS,.1219)=TEMPADDRESS("PHONE")
 S FDA(2,IENS,.1223)=$G(TEMPADDRESS("COUNTRY IEN"))
 ;
 D FILE^DIE(,"FDA","FDAERR") K FDA
 I $D(FDAERR) D ERRLOG^SDES2JSON(.ERRORS,648)
 S TEMPMSG="Temporary Address is active and was successfully updated."
 Q
 ;
DELTEMPADD(ERRORS,TEMPADDRESS,TEMPMSG) ;
 N FDA,FDAERR,IENS
 S IENS=TEMPADDRESS("PATIENT IEN")_","
 ;
 S FDA(2,IENS,.12105)="N"
 S TEMPMSG="Temporary Address was successfully inactivated."
 ;
 I $G(TEMPADDRESS("DELETE FLAG")) D
 . S FDA(2,IENS,.1211)="@"
 . S FDA(2,IENS,.1212)="@"
 . S FDA(2,IENS,.1213)="@"
 . S FDA(2,IENS,.1214)="@"
 . S FDA(2,IENS,.1215)="@"
 . S FDA(2,IENS,.1216)="@"
 . S FDA(2,IENS,.12111)="@"
 . S FDA(2,IENS,.12112)="@"
 . S FDA(2,IENS,.1217)="@"
 . S FDA(2,IENS,.1218)="@"
 . S FDA(2,IENS,.1219)="@"
 . S FDA(2,IENS,.1223)="@"
 . S TEMPMSG="Temporary Address was successfully inactivated and deleted."
 ;
 D FILE^DIE(,"FDA","FDAERR") K FDA
 I $D(FDAERR) D ERRLOG^SDES2JSON(.ERRORS,649)
 Q