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

DGADDUTL.m

Go to the documentation of this file.
  1. DGADDUTL ;ALB/PHH,EG,BAJ,ERC,CKN,TDM,LBD,JAM,ARF - PATIENT ADDRESS ; 19 Jul 2017 3:03 PM
  1. ;;5.3;Registration;**658,695,730,688,808,851,872,915,925,941,1010,1040,1056**;Aug 13, 1993;Build 18
  1. Q
  1. ADDR ; validate/edit Patient address (entry for DG ADDRESS UPDATE option)
  1. N %,QUIT,DIC,Y,DFN,USERSEL
  1. ADDRLOOP ;
  1. N X,DGLN,DGCNT,DGLINE,DIWL,DIWR,DIWF ;DG*5.3*1056
  1. W !!
  1. K DIC,Y,DFN,USERSEL
  1. S DIC="^DPT(",DIC(0)="AEMZQ",DIC("A")="Veteran Name/SSN: " D ^DIC
  1. I $D(DTOUT)!($D(DUOUT)) Q
  1. Q:Y'>0
  1. ;
  1. S DFN=+Y,QUIT=0
  1. L +^DPT(DFN):3 E W !!,"Patient is being edited. Try again later." G ADDR
  1. F D Q:QUIT
  1. .; JAM - Patch DG*5.3*941 Modify prompt to add "Mailing"
  1. .; Patch DG*5.3*1056 Remove (P)ermanent from the following prompt, changed to (M)ailing
  1. .W !!
  1. .S X="Do you want to update the (M)ailing Address, (T)emporary Mailing Address, or (B)oth? "
  1. . ;Patch DG*5.3*1056 - use DIWP to format the prompt
  1. .K ^UTILITY($J,"W") S DIWL=0,DIWR=79,DIWF="" D ^DIWP
  1. .S DGCNT=^UTILITY($J,"W",0)
  1. .F DGLN=1:1:DGCNT S DGLINE=$TR(^UTILITY($J,"W",0,DGLN,0),"_"," ") W !,DGLINE
  1. .K ^UTILITY($J,"W")
  1. .R USERSEL:300
  1. .I '$T S USERSEL="^"
  1. .I USERSEL["^"!(USERSEL="") S QUIT=1 Q
  1. .S USERSEL=$TR(USERSEL,"mtb","MTB") ;DG*5.3*1056 added M for Mailing Address and removed P(ermanent)
  1. .I USERSEL'="M",USERSEL'="T",USERSEL'="B" D Q ;DG*5.3*1056 added M for Mailing Address and removed P(ermanent)
  1. ..W !,"Invalid selection!"
  1. .I (USERSEL="M")!(USERSEL="B") W ! D UPDATE(DFN,"PERM") ;DG*5.3*1056 added M for Mailing Address and removed P(ermanent)
  1. .I USERSEL="T"!(USERSEL="B") D UPDATE(DFN,"TEMP")
  1. .S QUIT=1
  1. L -^DPT(DFN)
  1. G ADDRLOOP
  1. ADD(DFN) ; validate/edit Patient address (entry point for routine DGREG)
  1. ; Input -- DFN
  1. ;
  1. ; DG*5.3*1040 - New variable DGADDFG to track called from entry point ADD
  1. N RETVAL,ADDYN,DGADDFG S DGADDFG=1
  1. ;Display the mailing address (DG*5.3*851)
  1. D DISPADD^DGADDUT2(DFN)
  1. S (RETVAL,ADDYN)=0
  1. F D Q:ADDYN
  1. .;jam DG*5.3*925 RM#788099 Add/Edit Residential address - Change prompt to Permanent Mailing Address:
  1. .;DG*5.3*1056 removed Permanent from the following prompt
  1. .S ADDYN=$$ADDYN("Do you want to edit the Patient's Mailing Address")
  1. .S RETVAL=ADDYN
  1. .I ADDYN'=1,ADDYN'=2 S (ADDYN,RETVAL)=0
  1. .I 'ADDYN W !?5,"Enter 'YES' to edit Patient's Address or 'NO' to continue."
  1. I ADDYN=1,$G(DFN)'="",$D(^DPT(DFN,0)) D
  1. .D UPDATE(DFN,"PERM")
  1. .; DG*5.3*1040 - Check if DGTMOT exists and return -1
  1. .I +$G(DGTMOT) S RETVAL=-1
  1. .E S RETVAL=1
  1. Q RETVAL
  1. ADDYN(PROMPT) ; Yes/No Prompt to Edit/Validate Address
  1. ; Input -- None
  1. ; Output -- 1 = YES
  1. ; 2 = NO
  1. ; -1 = Aborted
  1. ;
  1. N %
  1. W !,PROMPT
  1. D YN^DICN
  1. Q %
  1. UPDATE(DFN,TYPE) ; Update the Address
  1. ; Input -- TYPE = "PERM" for Permanent Address
  1. ; = "TEMP" for Temporary Address
  1. ; Output -- None
  1. ;
  1. I TYPE'="PERM",TYPE'="TEMP" Q
  1. I TYPE="PERM" D
  1. .W !
  1. .; JAM DG*5.3*941, Home and Office phone numbers not associated with Perm Address, so set FLG(1)=0 so we don't edit these fields here
  1. .N FLG S FLG(1)=0,FLG(2)=1
  1. .D ADDRED(DFN,.FLG)
  1. ;
  1. I TYPE="TEMP" D
  1. .D EDITTADR(DFN)
  1. ;
  1. Q
  1. UPDDTTM(DFN,TYPE) ; Update the PATIENT file #2 with the current date and time
  1. ;
  1. D UPDDTTM^DGADDUT2(DFN,TYPE)
  1. Q
  1. ADDRED(DFN,FLG) ; Address Edit (Code copied from DGREGAED and modified)
  1. ;Input:
  1. ; DFN (required) - Internal Entry # of Patient File (#2)
  1. ; FLG (optional) - Flags of 1 or 0; if null, 0 is assumed. Details:
  1. ; FLG(1) - if 1, let user edit phone numbers (field #.131 and #.132)
  1. ; FLG(2) - if 1, display before & after address for user confirmation
  1. N SRC,%,DGINPUT,I,X,Y
  1. I '$G(DGADDFG) N DGTMOT S DGTMOT=0 ; DG*5.3*1040 - New only coming from entry point UPDATE directly
  1. S SRC="ADDUTL"
  1. D EN^DGREGAED(DFN,.FLG,SRC)
  1. ;
  1. ; DG*5.3*1040; jam; If timeout and this is a direct call to UPDATE, clear the screen prior to quitting
  1. I $G(DGTMOT),'$G(DGADDFG) W @IOF,!!!
  1. ;
  1. ; Update the Date/Time Stamp
  1. ;The next line was disabled to fix problem of Date/Time stamp being
  1. ;updated even if no changes were made (DG*5.3*851).
  1. ;D UPDDTTM(DFN,TYPE)
  1. Q
  1. GETPRIOR(DFN,DGPRIOR) ; Get prior address fields.
  1. N DGCURR,DGN,DGARRY,DGCIEN,DGST,DGCNTY
  1. D GETS^DIQ(2,DFN_",",".111;.112;.113;.114;.115;.117;.1112;.131;.132;.121;.118;.119;.12;.122;.1171:.1173","I","DGCURR")
  1. F DGN=.111,.112,.113,.114,.115,.117,.1112,.131,.132,.121,.118,.119,.12,.122,.1171,.1172,.1173 D
  1. . S DGARRY("OLD",DGN)=$G(DGCURR(2,DFN_",",DGN,"I"))
  1. M DGPRIOR=DGARRY("OLD")
  1. Q
  1. GETUPDTS(DFN,DGINPUT) ; Get current address fields.
  1. N DGCURR,DGN,DGARRY
  1. D GETS^DIQ(2,DFN_",",".118;.119;.12;.122","I","DGCURR")
  1. F DGN=.118,.119,.12,.122 D
  1. . S DGARRY("NEW",DGN)=$G(DGCURR(2,DFN_",",DGN,"I"))
  1. M DGINPUT=DGARRY("NEW")
  1. Q
  1. FILEYN(DGOLD,DGNEW) ; Determine whether or not to file to #301.7
  1. N RETVAL
  1. S RETVAL=0
  1. D
  1. .I DGOLD(.111)'=$G(DGNEW(.111)) S RETVAL=1 Q
  1. .I DGOLD(.112)'=$G(DGNEW(.112)) S RETVAL=1 Q
  1. .I DGOLD(.113)'=$G(DGNEW(.113)) S RETVAL=1 Q
  1. .I DGOLD(.114)'=$G(DGNEW(.114)) S RETVAL=1 Q
  1. .I DGOLD(.115)'=$P($G(DGNEW(.115)),"^",2) S RETVAL=1 Q
  1. .I DGOLD(.1112)'=$G(DGNEW(.1112)) S RETVAL=1 Q
  1. .I DGOLD(.117)'=$P($G(DGNEW(.117)),"^",2) S RETVAL=1 Q
  1. .I DGOLD(.131)'=$G(DGNEW(.131)) S RETVAL=1 Q
  1. .I DGOLD(.1171)'=$G(DGNEW(.1171)) S RETVAL=1 Q
  1. .I DGOLD(.1172)'=$G(DGNEW(.1172)) S RETVAL=1 Q
  1. .I DGOLD(.1173)'=$P($G(DGNEW(.1173)),"^",2) S RETVAL=1 Q
  1. .I DGOLD(.121)'=$G(DGNEW(.121)) S RETVAL=1 Q
  1. Q RETVAL
  1. FOREIGN(DFN,CIEN,FILE,FIELD,COUNTRY) ;
  1. ; ** NOTE we have to default the value for "US" into the prompt if it is blank
  1. N FORGN,DA,DIR,DTOUT,DUOUT,DIROUT,DONE,INDX
  1. S:'$G(FILE) FILE=2 I '$G(FIELD) S FIELD=.1173
  1. S DIR(0)=FILE_","_FIELD,DONE=0 S:DFN DA=DFN
  1. S DIR("B")=$E($$CNTRYI^DGADDUTL(CIEN),1,19) I DIR("B")=-1 S DIR("B")="UNKNOWN COUNTRY"
  1. F D Q:DONE
  1. . D ^DIR
  1. . I $D(DTOUT) S DONE=1,FORGN=-1 Q
  1. . I $D(DUOUT)!$D(DIROUT) W !,"EXIT NOT ALLOWED" Q
  1. . I $D(DIRUT) W !,"This is a required response." Q
  1. . S COUNTRY=$P($G(Y),"^",2),FORGN=$$FORIEN($P($G(Y),"^")),DONE=1
  1. Q FORGN
  1. UPDADDLG(DFN,DGPRIOR,DGINPUT) ; Update the IVM ADDRESS CHANGE LOG file #301.7
  1. ;
  1. D UPDADDLG^DGADDUT2(DFN,.DGPRIOR,.DGINPUT)
  1. Q
  1. EDITTADR(DFN) ; Edit Temporary Address
  1. N DGPRIOR,DGCH,DGRPAN,DGDR,DGRPS
  1. I $G(DFN)="" Q
  1. ;I ($G(DFN)'?.N) Q
  1. ;
  1. ; Get the current Temporary Address and display it
  1. D GETTADR(DFN,.DGPRIOR)
  1. D DISPTADR(DFN,.DGPRIOR)
  1. W !!
  1. ;
  1. I '$G(DGADDFG) N DGTMOT S DGTMOT=0 ; DG*5.3*1040 - New only coming from entry point UPDATE directly
  1. ;
  1. ; JAM - Patch DG*5.3*941 - Temporary Mailing Address is editable via screen 1.1 group 3 (from screen 1 group 5)
  1. ;S DGCH=5,DGRPAN="1,2,3,4,5,",DGDR="",DGRPS=1
  1. S DGCH=3,DGRPAN="1,2,3,4,5",DGDR="",DGRPS=1.1
  1. D CHOICE^DGRPP
  1. D ^DGRPE
  1. ; DG*5.3*1040; jam; If timeout and this is a direct call to UPDATE, clear the screen prior to quitting
  1. I $G(DGTMOT),'$G(DGADDFG) W @IOF,!!! Q
  1. ; Update the Date/Time Stamp
  1. D UPDDTTM(DFN,TYPE)
  1. Q
  1. GETTADR(DFN,DGPRIOR) ; Get prior temporary address fields.
  1. N DGCURR,DGN,DGARRY,DGCIEN,DGST,DGCNTY
  1. D GETS^DIQ(2,DFN_",",".1211;.1212;.1213;.1214;.1215;.1216;.1217;.1218;.12105;.1219;.12111;.12112;.12113;.12114;.1221:.1223","I","DGCURR")
  1. F DGN=.1211,.1212,.1213,.1214,.1215,.1216,.1217,.1218,.12105,.1219,.12111,.12112,.12113,.12114,.1221,.1222,.1223 D
  1. .S DGARRY("OLD",DGN)=$G(DGCURR(2,DFN_",",DGN,"I"))
  1. M DGPRIOR=DGARRY("OLD")
  1. Q
  1. DISPTADR(DFN,DGARRY) ; Display Temporary Address
  1. N DGADRACT,DGADR1,DGADR2,DGADR3,DGCITY,DGSTATE,DGZIP
  1. N DGCOUNTY,DGPHONE,DGFROMDT,DGTODT,DGPROV,DGPCODE,DGCNTRY,DGFORN
  1. ;
  1. S DGADRACT=$G(DGARRY(.12105))
  1. S DGADR1=$G(DGARRY(.1211))
  1. S DGADR2=$G(DGARRY(.1212))
  1. S DGADR3=$G(DGARRY(.1213))
  1. S DGCITY=$G(DGARRY(.1214))
  1. S DGSTATE=$G(DGARRY(.1215))
  1. S DGZIP=$G(DGARRY(.1216))
  1. S DGCOUNTY=$G(DGARRY(.12111))
  1. I DGCOUNTY'="",DGSTATE'="",$D(^DIC(5,DGSTATE,1,DGCOUNTY,0)) D
  1. .S DGCOUNTY=$P(^DIC(5,DGSTATE,1,DGCOUNTY,0),"^")_$S($P(^DIC(5,DGSTATE,1,DGCOUNTY,0),"^",4)'="":"("_$P(^DIC(5,DGSTATE,1,DGCOUNTY,0),"^",4)_")",1:"")
  1. ;changing to remove display of empty (), will only display if a code is in the 4th piece of the state file-Patch 872
  1. ;S DGCOUNTY=$P(^DIC(5,DGSTATE,1,DGCOUNTY,0),"^")_"( "_$P(^DIC(5,DGSTATE,1,DGCOUNTY,0),"^",4)
  1. I DGADRACT'="Y" S DGCOUNTY="NOT APPLICABLE"
  1. I DGSTATE'="",$D(^DIC(5,DGSTATE,0)) S DGSTATE=$P(^DIC(5,DGSTATE,0),"^",2)
  1. S DGPROV=$G(DGARRY(.1221))
  1. S DGPCODE=$G(DGARRY(.1222))
  1. S DGCNTRY=$G(DGARRY(.1223))
  1. S DGFORN=$$FORIEN(DGCNTRY)
  1. I DGCNTRY]"" S DGCNTRY=$$CNTRYI(DGCNTRY)
  1. S DGPHONE=$G(DGARRY(.1219))
  1. S DGFROMDT=$$FMTE^XLFDT($G(DGARRY(.1217)))
  1. S DGTODT=$$FMTE^XLFDT($G(DGARRY(.1218)))
  1. ;
  1. ;jam DG*5.3*925 RM#788099 Add/Edit Residential address - Change field label to Temporary Mailing Address:
  1. W !!,"Temporary Mailing Address: "
  1. I DGADRACT="Y" D
  1. .W:DGADR1'="" !?9,DGADR1
  1. .W:DGADR2'="" !?9,DGADR2
  1. .W:DGADR3'="" !?9,DGADR3
  1. .I DGFORN=0 D
  1. ..W !?9,$S(DGCITY'="":DGCITY,1:"")_$S(DGCITY'="":",",1:" ")_$S(DGSTATE'="":DGSTATE,1:"")_" "_$S(DGZIP'="":DGZIP,1:"")
  1. .;I DGFORN W !?8,$S(DGPCODE'="":DGPCODE,1:"")_" "_$S(DGCITY'="":DGCITY,1:"")_$S(DGCITY'="":",",1:" ")_$S(DGPROV'="":DGPROV,1:"") ;DG*1010 comment out
  1. .I DGFORN W !?8,$S(DGCITY'="":DGCITY,1:"")_$S(DGCITY'="":",",1:" ")_$S(DGPROV'="":DGPROV,1:"")_" "_$S(DGPCODE'="":DGPCODE,1:"") ;DG*1010 - display postal code last
  1. ;commenting out, causes address to print 2x. Patch 872
  1. ;W !?9,$S(DGCITY'="":DGCITY,1:"")_","_$S(DGSTATE'="":DGSTATE,1:"")_" "_$S(DGZIP'="":DGZIP,1:"")
  1. ;Removing lines from dot structure Patch 872
  1. W !," County: "_DGCOUNTY
  1. W !," Phone: "_DGPHONE
  1. W !,"From/To: "_$P(DGFROMDT,",")_","_$P(DGFROMDT,", ",2)_"-"_$P(DGTODT,",")_","_$P(DGTODT,", ",2)
  1. ;
  1. I $G(DGARRY(.12105))="N" D
  1. .W:$G(DGARRY(.1211))="" !?9,"NO TEMPORARY ADDRESS"
  1. .W:$G(DGARRY(.1212))="" !?9,""
  1. .W !," County: NOT APPLICABLE"
  1. .W !," Phone: NOT APPLICABLE"
  1. .W !,"From/To: NOT APPLICABLE"
  1. Q
  1. COUNTRY(DGC) ;
  1. ;where DGC is the external value of the country
  1. ;return value is in upper case display mode
  1. ;if DGC is invalid, return -1
  1. N DGCC,DGIEN
  1. ; if input is NULL change to US
  1. I $G(DGC)="" S DGC="USA"
  1. ; Get IEN from B index, error if not found
  1. S DGIEN=$O(^HL(779.004,"B",DGC,"")) Q:DGIEN']"" -1
  1. ; xlate IEN to POSTAL NAME
  1. S DGCC=$P(^HL(779.004,DGIEN,"SDS"),U,3)
  1. ; if POSTAL NAME = "<NULL>" return DESCRIPTION
  1. I DGCC="<NULL>" D
  1. . S DGCC=$$UPPER^DGUTL($P(^HL(779.004,DGIEN,0),U,2))
  1. Q DGCC
  1. FOR(DGC) ;returns a 1 if address is foreign, a 0 if domestic, -1 if DGC is not valid
  1. ; DGC is the external value of the country (.01 field of file 779.004)
  1. N DGFOR
  1. S DGFOR=0
  1. I $G(DGC)="" Q DGFOR
  1. I '$D(^HL(779.004,"B",DGC)) Q -1
  1. I DGC'="USA" S DGFOR=1
  1. Q DGFOR
  1. CNTRYI(DGIEN) ;where DGC is the internal value of the country
  1. ;return DGC as the display value for the country
  1. ;if the input value is not a valid IEN, return -1
  1. ;if the input value is null, return null
  1. N DGCC
  1. I $G(DGIEN)="" Q ""
  1. I '$D(^HL(779.004,DGIEN,0)) Q -1
  1. ; xlate IEN to POSTAL NAME
  1. S DGCC=$P(^HL(779.004,DGIEN,"SDS"),U,3)
  1. ; if POSTAL NAME = "<NULL>" return DESCRIPTION
  1. I DGCC="<NULL>" D
  1. . S DGCC=$$UPPER^DGUTL($P(^HL(779.004,DGIEN,0),U,2))
  1. Q DGCC
  1. FORIEN(DGC) ;returns a 1 if address is foreign, a 0 if domestic, -1 if DGC is invalid
  1. ;DGC is the IEN of the country file (#779.004)
  1. N DGFOR
  1. S DGFOR=0
  1. I $G(DGC)="" Q DGFOR
  1. I DGC'?1.3N Q -1
  1. I '$D(^HL(779.004,DGC,0)) Q -1
  1. I DGC]"",(DGC'=$O(^HL(779.004,"B","USA",""))) S DGFOR=1
  1. Q DGFOR