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

DGRPCADD.m

Go to the documentation of this file.
  1. DGRPCADD ;ALB/MRL,BAJ,TDM,JAM,ARF - REGISTRATION SCREEN 1.1/CONFIDENTIAL ADDRESS INFORMATION ;19 Jul 2017 3:05 PM
  1. ;;5.3;Registration;**489,624,688,754,887,941,1056**;Aug 13, 1993;Build 18
  1. ;
  1. ;;**688 BAJ Jan 17,2006 Modifications to support Foreign addresses
  1. ;;**941 JAM Apr 18,2017 Reformat of screen 1.1 - new field layouts
  1. ;
  1. N DGA,DGA1,DGA2,DGRP,DGAD,DGCAN,DGRPS,DGRPW,Z,Z1,DGZ,DGX,DGACT,DGCAT,DGI,DGTYP,DGTYPNAM,DGXX,CNT,DGBEG,DGEND,X,Y,I,I1
  1. S DGRPS=1.1 D H^DGRPU
  1. W ! S Z=1,DGRPW=0 D WW^DGRPV W " Residential Address: " S Z=" ",Z1=15 ;DG*5.3*1056 - changed Z1 from 17 to 15
  1. ;DG*5.3*1056 removed Permanent from the following address label
  1. D WW1^DGRPV S Z=2,DGRPW=0 D WW^DGRPV W " Mailing Address: "
  1. F I=.11,.121,.122,.13,.115,.141 S DGRP(I)=$S($D(^DPT(DFN,I)):^(I),1:"")
  1. ;S DGAD=.11,(DGA1,DGA2)=1 D A^DGRPU I $P(DGRP(.121),"^",9)="Y" S DGAD=.121,DGA1=1,DGA2=2 D A^DGRPU
  1. S DGAD=.115,(DGA1,DGA2)=1 D AL^DGRPU(35) S DGAD=.11,DGA1=1,DGA2=2 D AL^DGRPU(35)
  1. W !?5
  1. S Z1=39,Z=$S($D(DGA(1)):DGA(1),1:"NONE ON FILE") D WW1^DGRPV W $S($D(DGA(2)):DGA(2),1:"NO PERMANENT MAILING ADDRESS")
  1. ; loop through DGA array beginning with DGA(2) and print data at ?5 (odds) and ?44 (evens)
  1. S I=2 F I1=0:0 S I=$O(DGA(I)) Q:I="" W:(I#2)!($X>40) !?5 W:'(I#2) ?44 W DGA(I)
  1. N DGCC
  1. S DGCC=$$COUNTY(.DGRP,.115) ; print County if applicable
  1. W !?5,"County: "_DGCC
  1. S DGCC=$$COUNTY(.DGRP,.11) ; print County if applicable
  1. W ?44,"County: "_DGCC
  1. W !?6,"Phone: ",$S($P(DGRP(.13),U,1)]"":$P(DGRP(.13),U,1),1:DGRPU)
  1. W ?42,"Bad Addr: ",$$EXTERNAL^DILFD(2,.121,"",$P(DGRP(.11),U,16))
  1. W !?5,"Office: ",$S($P(DGRP(.13),U,2)]"":$P(DGRP(.13),U,2),1:DGRPU)
  1. W !!
  1. K DGA,DGA1,DGA2
  1. I $P(DGRP(.121),"^",9)="Y" S DGAD=.121,(DGA1,DGA2)=1 D AL^DGRPU(30)
  1. I $P(DGRP(.141),"^",9)="Y" I $P($$CAACT(DFN),U) S DGAD=.141,DGA1=1,DGA2=2 D AL^DGRPU(30)
  1. S Z=3 D WW^DGRPV W " Temporary Mailing Address: " S Z=" ",Z1=11
  1. D WW1^DGRPV S Z=4,DGRPW=0 D WW^DGRPV W " Confidential Mailing Address: "
  1. W !?5
  1. S Z1=39,Z=$S($D(DGA(1)):DGA(1),1:"NO TEMPORARY MAILING ADDRESS") D WW1^DGRPV W $S($D(DGA(2)):DGA(2),1:"NONE ON FILE")
  1. ; loop through DGA array beginning with DGA(2) and print data at ?5 (odds) and ?44 (evens)
  1. S I=2 F I1=0:0 S I=$O(DGA(I)) Q:I="" W:(I#2)!($X>40) !?5 W:'(I#2) ?44 W DGA(I)
  1. W !
  1. I $D(DGA(1)) D
  1. .S DGCC=$$COUNTY(.DGRP,.121) ; print County if applicable
  1. .W ?5,"County: "_DGCC
  1. I $D(DGA(2)) I $P($$CAACT(DFN),U) D
  1. .S DGCC=$$COUNTY(.DGRP,.141) ; print County if applicable
  1. .W ?44,"County: "_DGCC
  1. W !?6,"Phone: ",$S($P(DGRP(.121),U,9)'="Y":"NOT APPLICABLE",$P(DGRP(.121),U,10)]"":$P(DGRP(.121),U,10),1:DGRPU)
  1. W ?45,"Phone: ",$S($P(DGRP(.141),U,9)'="Y":"NOT APPLICABLE",'$P($$CAACT(DFN),U):"NOT APPLICABLE",$P(DGRP(.13),U,15)]"":$P(DGRP(.13),U,15),1:DGRPU)
  1. S X="NOT APPLICABLE"
  1. I $P(DGRP(.121),U,9)="Y" D
  1. .S Y=$P(DGRP(.121),U,7) X:Y]"" ^DD("DD")
  1. .S X=$S(Y]"":Y,1:DGRPU)_"-",Y=$P(DGRP(.121),U,8) X:Y]"" ^DD("DD")
  1. .S X=X_$S(Y]"":Y,1:DGRPU)
  1. W !?2,"From/To: ",X
  1. S DGX="NOT APPLICABLE"
  1. I $P(DGRP(.141),U,9)="Y" I $P($$CAACT(DFN),U) D
  1. .S (DGZ,DGX)="" F DGI=7,8 S DGZ=$P(DGRP(.141),"^",DGI),Y=DGZ D
  1. ..I DGI=7 X:Y]"" ^DD("DD") S DGBEG=Y,DGX=Y
  1. ..I DGI=8 X:Y]"" ^DD("DD") S DGEND=Y,DGX=DGX_"-"_$S(Y]"":Y,1:"UNANSWERED")
  1. W ?43,"From/To: "_DGX
  1. W !?38,"Categories: " I $D(^DPT(DFN,.14)) D
  1. .; if Confidential Address not active, don't display categories
  1. .I $P(DGRP(.141),U,9)'="Y" Q
  1. .I '$P($$CAACT(DFN),U) Q
  1. .S DGCAT=$$GET1^DID(2.141,.01,"","POINTER","","DGERR")
  1. .S DGX="",DGCAN="" F S DGCAN=$O(^DPT(DFN,.14,DGCAN)) Q:DGCAN="" D
  1. ..Q:'$D(^DPT(DFN,.14,DGCAN,0))
  1. ..S DGTYP=$P(^DPT(DFN,.14,DGCAN,0),"^",1),DGACT=$P(^DPT(DFN,.14,DGCAN,0),"^",2)
  1. ..S DGACT=$S(DGACT="Y":"Active",DGACT="N":"Inactive",1:"Unanswered")
  1. ..S DGTYPNAM="" F DGI=1:1 S DGTYPNAM=$P(DGCAT,";",DGI) Q:DGTYPNAM="" D
  1. ...I DGTYPNAM[DGTYP S DGTYPNAM=$P(DGTYPNAM,":",2),DGX=DGTYPNAM_"("_DGACT_")"_","_DGX
  1. S DGXX="",CNT=0 F DGI=1:1 S DGXX=$P(DGX,",",DGI) Q:DGXX="" D
  1. .W:CNT>0 !
  1. .W ?38,DGXX
  1. .S CNT=CNT+1
  1. ; line feed before continuing
  1. W !
  1. G ^DGRPP
  1. CAACT(DFN,ACTDT) ;Determines if the Confidential Address is active
  1. ;Input: DFN - Patient (#2) file internal entry number (Required)
  1. ; ACTDT - Date used to determine if address is active
  1. ; (Optional) Defaults to DT if not defined.
  1. ;
  1. ;Output:
  1. ; 1st piece 0 inactive based on start/stop dates
  1. ; 1 active based on start/stop dates
  1. ; 2nd piece 0 - no active correspondence types
  1. ; 1 - at least one active correspondence type
  1. ;
  1. N DGCA,DGCABEG,DGCAEND,DGSTAT,DGIEN,DGTYP,DGFLG
  1. S DGSTAT="0^0"
  1. I '$D(DFN) Q DGSTAT
  1. I '$D(ACTDT) S ACTDT=DT
  1. S DGCA=$G(^DPT(DFN,.141)) D
  1. .I DGCA="" Q
  1. .S DGCABEG=$P(DGCA,U,7)
  1. .S DGCAEND=$P(DGCA,U,8)
  1. .I 'DGCABEG!(DGCABEG>ACTDT)!(DGCAEND&(DGCAEND<ACTDT)) Q
  1. .S DGSTAT="1^0"
  1. ;Build array of correspondence types
  1. S (DGIEN,DGFLG)=0
  1. F S DGIEN=$O(^DPT(DFN,.14,DGIEN)) Q:'DGIEN D Q:DGFLG
  1. .S DGTYP=$G(^DPT(DFN,.14,+DGIEN,0))
  1. .I $P(DGTYP,U,2)="Y" S DGFLG=1
  1. S $P(DGSTAT,U,2)=$S(DGFLG=1:1,1:0)
  1. Q DGSTAT
  1. ;JAM - Patch DG*5.3*941 - return county
  1. COUNTY(DGRP,FNODE) ;retrieve County info if a US address
  1. N CNODE,FCPE,IEN,DGCC,PIECE
  1. S DGCC=""
  1. ; default data location of address County info
  1. S PIECE=7,FCPE=10,CNODE=FNODE
  1. ; data location of Temporary address County info
  1. I FNODE=.121 S FCPE=3,PIECE=11,CNODE=.122
  1. ; data location of Confidential address County info
  1. I FNODE=.141 S PIECE=11,FCPE=16
  1. S IEN=$P(DGRP(CNODE),U,FCPE)
  1. I '$$FORIEN^DGADDUTL(IEN) D
  1. .S DGCC=$S($D(^DIC(5,+$P(DGRP(FNODE),U,5),1,+$P(DGRP(FNODE),U,PIECE),0)):$E($P(^(0),U,1),1,20)_$S($P(^(0),U,3)]"":" ("_$P(^(0),U,3)_")",1:""),1:DGRPU)
  1. E S DGCC="NOT APPLICABLE"
  1. Q DGCC