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

DGADDVAL.m

Go to the documentation of this file.
  1. DGADDVAL ;ALB/JAM - UAM Address Validation ;28 May 2020 10:33 AM
  1. ;;5.3;Registration;**1014,1040**;Aug 13, 1993;Build 15
  1. ;
  1. EN(DGINPUT,DGTYPE) ; Main entry point
  1. ; Input: DGINPUT (Required, pass by reference) - Array containing the address to be validated
  1. ; DGTYPE (optional) - Address Type: "R"-Residential "C"-Confidential "P"-Permanent (default)
  1. ; Output: DGINPUT (Pass by reference) - Array will contain the address accepted by the user
  1. ; Return: 0 - error has been encountered
  1. ; 1 - validation is completed and DGINPUT contains the accepted address
  1. ;
  1. ; Format of DGINPUT array
  1. ; DGINPUT(field#)=VALUE
  1. ;
  1. ; Note: For Residential and Perm Addresses:
  1. ; State VALUE = "STATENAME^STATECODE"
  1. ; Country VALUE = "COUNTRY^COUNTRYCODE"
  1. ; County VALUE = "COUNTY^COUNTYCODE
  1. ; For Confidential Addresses:
  1. ; State VALUE = "STATECODE^STATENAME"
  1. ; Country VALUE = "COUNTRYCODE^COUNTRY"
  1. ; County VALUE = "COUNTYCODE^COUNTY
  1. ;
  1. N DGCNT,DGADDR,DGFLDS,DGFORGN,DGCTRYCD,DGSTR,DGX,DGRECS,DGSELADD,DGSTAT,DGSTATECD,DGTMOT
  1. ;
  1. ; Set up string of address field numbers - Format:
  1. ; "AddressLine1,AddressLine2,AddressLine3,City,State,County,Zip,Province,PostalCode^Country"
  1. S DGFLDS=".111,.112,.113,.114,.115,.117,.1112,.1171,.1172,.1173" ; Permanent Address fields
  1. I $G(DGTYPE)="R" S DGFLDS=".1151,.1152,.1153,.1154,.1155,.1157,.1156,.11571,.11572,.11573" ; Residential address fields
  1. I $G(DGTYPE)="C" S DGFLDS=".1411,.1412,.1413,.1414,.1415,.14111,.1416,.14114,.14115,.14116" ; Confidential address fields
  1. ;
  1. ; All addresses are placed in the DGADDR array for user selection
  1. ; First address displayed is the address DGINPUT
  1. S DGCNT=1
  1. M DGADDR(DGCNT)=DGINPUT
  1. ; Normalize the Country and State entries for Conf address in DGADDR so the format is the same for all addresses in DGADDR array
  1. I DGTYPE="C" D
  1. . ; State may not be defined
  1. . I $D(DGADDR(1,$P(DGFLDS,",",5))) S DGX=DGADDR(1,$P(DGFLDS,",",5)),DGADDR(1,$P(DGFLDS,",",5))=$P(DGX,"^",2)_"^"_$P(DGX,"^",1)
  1. . S DGX=DGADDR(1,$P(DGFLDS,",",10)),DGADDR(1,$P(DGFLDS,",",10))=$P(DGX,"^",2)_"^"_$P(DGX,"^",1)
  1. ; Capture the State code passed in
  1. S DGCTRYCD=$P(DGADDR(1,$P(DGFLDS,",",10)),"^",2)
  1. ; Get flag for domestic/foreign address
  1. S DGFORGN=0
  1. S DGFORGN=$$FORIEN^DGADDUTL(DGCTRYCD)
  1. I 'DGFORGN S DGSTATECD=$P(DGADDR(1,$P(DGFLDS,",",5)),"^",2)
  1. ;
  1. ; Call the validation service
  1. S DGSTAT=$$EN^DGUAMWS(.DGADDR,DGFLDS,DGFORGN) ; DGADDR is updated with address validation results
  1. I +DGSTAT=0 QUIT DGSTAT
  1. ; get total records returned. Subtract one for the original.
  1. S DGRECS=$O(DGADDR(""),-1)-1
  1. F DGX=1:1:DGRECS D
  1. . S DGCNT=DGCNT+1
  1. . ; Store in this array entry the same country that was passed in
  1. . S DGADDR(DGCNT,$P(DGFLDS,",",10))=DGADDR(1,$P(DGFLDS,",",10))
  1. . I 'DGFORGN D
  1. . . ; Store the same county that was passed in
  1. . . S DGADDR(DGCNT,$P(DGFLDS,",",6))=DGADDR(1,$P(DGFLDS,",",6))
  1. ;
  1. ; Call DGEN ADDR VAL list to show addresses and allow user selection
  1. S DGADDR=DGCNT
  1. ; DG*5.3*1040; Add DTMOUT param for Timeout in the subroutine
  1. D EN^DGADDLST(DFN,DGFLDS,.DGADDR,.DGSELADD,.DGTMOT)
  1. ; DG*5.3*1040; If DGTMOT set, return -1 to flag that a timeout occurred
  1. I +$G(DGTMOT) Q -1
  1. ; Move selected address into DGINPUT array
  1. M DGINPUT=DGSELADD
  1. ; Put the State and Country fields back in DGINPUT to the format used for Conf addresses
  1. I DGTYPE="C" D
  1. . I $D(DGADDR(1,$P(DGFLDS,",",5))) D
  1. . . S DGX=DGINPUT($P(DGFLDS,",",5)),DGINPUT($P(DGFLDS,",",5))=$P(DGX,"^",2)_"^"_$P(DGX,"^",1)
  1. . . ; If the State code is empty, put the original State code in the array - Confidential Address needs the State code to file
  1. . . I $P(DGINPUT($P(DGFLDS,",",5)),"^",1)="" S $P(DGINPUT($P(DGFLDS,",",5)),"^",1)=DGSTATECD
  1. . S DGX=DGINPUT($P(DGFLDS,",",10)),DGINPUT($P(DGFLDS,",",10))=$P(DGX,"^",2)_"^"_$P(DGX,"^",1)
  1. Q 1