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

VADPT1.m

Go to the documentation of this file.
  1. VADPT1 ;ALB/MRL,MJK,ERC,TDM,CLT,ARF - PATIENT VARIABLES ;05 May 2017 1:41 PM
  1. ;;5.3;Registration;**415,489,516,614,688,754,887,941,1059,1067,1071,1064**;Aug 13, 1993;Build 41
  1. ;
  1. ; NOTE: When setting up subscripts in the return array, the top level subscript must always be defined
  1. ; - (e.g. Inpatient Meds uses this API and assumes the top level subscript is defined)
  1. ;
  1. 1 ;Demographic [DEM]
  1. N W,Z,NODE
  1. ;
  1. ; -- name [1 - NM]
  1. S VAX=^DPT(DFN,0),@VAV@($P(VAS,"^",1))=$P(VAX,"^")
  1. ;
  1. ; -- ssn [2 - SS]
  1. S Z=$P(VAX,"^",9) S:Z]"" @VAV@($P(VAS,"^",2))=Z_$S(Z]"":"^"_$E(Z,1,3)_"-"_$E(Z,4,5)_"-"_$E(Z,6,10),1:"")
  1. ;
  1. ; -- date of birth [2 - DB]
  1. S Z=$P(VAX,"^",3),Y=Z I Y]"" X ^DD("DD") S @VAV@($P(VAS,"^",3))=Z_"^"_Y
  1. ;
  1. ; -- age [4 - AG]
  1. S W=$S('$D(^DPT(DFN,.35)):"",'^(.35):"",1:+^(.35)) S Y=$S('W:DT,1:W) S:Z]"" @VAV@($P(VAS,"^",4))=$E(Y,1,3)-$E(Z,1,3)-($E(Y,4,7)<$E(Z,4,7))
  1. ;
  1. ; -- expired date [6 - EX]
  1. S (Y,Z)=W X:Y]"" ^DD("DD") S:Z]"" @VAV@($P(VAS,"^",6))=Z_"^"_Y
  1. ;
  1. ; -- sex [5 - SX]
  1. S Z=$P(VAX,"^",2) S:Z]"" @VAV@($P(VAS,"^",5))=Z_"^"_$S(Z="M":"MALE",Z="F":"FEMALE",1:"") K Z
  1. ;
  1. ; -- remarks [7 - RE]
  1. S @VAV@($P(VAS,"^",7))=$P(VAX,"^",10)
  1. ;
  1. ; -- historic race [8 - RA]
  1. S Z=$P(VAX,"^",6),@VAV@($P(VAS,"^",8))=Z_$S($D(^DIC(10,+Z,0)):"^"_$P(^(0),"^"),1:"")
  1. ;
  1. ; -- religion [9 - RP]
  1. S Z=$P(VAX,"^",8),@VAV@($P(VAS,"^",9))=Z_$S($D(^DIC(13,+Z,0)):"^"_$P(^(0),"^"),1:"")
  1. ;
  1. ; -- marital status [10 - MS]
  1. S Z=$P(VAX,"^",5),@VAV@($P(VAS,"^",10))=Z_$S($D(^DIC(11,+Z,0)):"^"_$P(^(0),"^"),1:"")
  1. ;
  1. ; -- ethnicity [11 - ET]
  1. S X=0 F Y=1:1 S X=+$O(^DPT(DFN,.06,X)) Q:'X D
  1. .S NODE=$G(^DPT(DFN,.06,X,0)),Z=$P(NODE,"^",1) I Z D
  1. ..S @VAV@($P(VAS,"^",11),Y)=Z_"^"_$P($G(^DIC(10.2,Z,0)),"^",1)
  1. ..; -- collection method
  1. ..S Z=$P(NODE,"^",2) I Z D
  1. ...S @VAV@($P(VAS,"^",11),Y,1)=Z_"^"_$P($G(^DIC(10.3,Z,0)),"^",1)
  1. S @VAV@($P(VAS,"^",11))=Y-1
  1. ;
  1. ; -- race [12 - RC]
  1. S X=0 F Y=1:1 S X=+$O(^DPT(DFN,.02,X)) Q:'X D
  1. .S NODE=$G(^DPT(DFN,.02,X,0)),Z=$P(NODE,"^",1) I Z D
  1. ..S @VAV@($P(VAS,"^",12),Y)=Z_"^"_$P($G(^DIC(10,Z,0)),"^",1)
  1. ..; -- collection method
  1. ..S Z=$P(NODE,"^",2) I Z D
  1. ...S @VAV@($P(VAS,"^",12),Y,1)=Z_"^"_$P($G(^DIC(10.3,Z,0)),"^",1)
  1. S @VAV@($P(VAS,"^",12))=Y-1
  1. ;
  1. ; -- current pt preferred language [13 - LG]
  1. N VALANGDT,VAPRFLAN,VALANG0,VAY,VALANGDA,X,Y
  1. S VALANGDT=9999999,(VAPRFLAN,VALANG0)=""
  1. S VALANGDT=$O(^DPT(DFN,.207,"B",VALANGDT),-1)
  1. I VALANGDT="" S @VAV@($P(VAS,"^",13))="",@VAV@($P(VAS,"^",13),1)=""
  1. I VALANGDT'="" D
  1. .S VALANGDA=$O(^DPT(DFN,.207,"B",VALANGDT,0))
  1. .S VALANG0=$G(^DPT(DFN,.207,VALANGDA,0)),Y=$P(VALANG0,U),VAPRFLAN=$P(VALANG0,U,2)
  1. .S (VAY,Y)=VALANGDT X ^DD("DD") S VALANGDT=Y
  1. .S @VAV@($P(VAS,"^",13))=VAY_"^"_VALANGDT ; FM version^human readable
  1. .S @VAV@($P(VAS,"^",13),1)=VALANGDA_"^"_VAPRFLAN ; Pointer^human readable
  1. ;
  1. ;**1059 Adding Sexual Orientation, Sexual Orientation Description, Pronoun, Pronoun Description, SIGI [14 - SOGI]
  1. ;**1071 VAMPI-13755 (jfw) - Display Additional SO Info
  1. N SOC,CNTR,PRO,SIGI,SIGIN,VAREF
  1. S @VAV@($P(VAS,"^",14))=""
  1. ;Sexual Orientation #.025 multiple
  1. S CNTR=1,X=0 F S X=$O(^DPT(DFN,.025,X)) Q:'X!(X="") D
  1. .N VASOI D GETS^DIQ(2.025,X_","_DFN,"*","EI","VASOI")
  1. .;External^Internal values: SO, Status, Date Created, Date Last Updated, TIU Document
  1. .S VAREF="VASOI(2.025,"""_X_","_DFN_","")",@VAV@($P(VAS,"^",14),1,CNTR)=$P($G(^DG(47.77,@VAREF@(.01,"I"),0)),"^",1,2)
  1. .N VAI F VAI=.02,.03,.04,.05 S @VAV@($P(VAS,"^",14),1,CNTR,(VAI*100-1))=@VAREF@(VAI,"E")_"^"_@VAREF@(VAI,"I")
  1. .S CNTR=CNTR+1
  1. S @VAV@($P(VAS,"^",14),1)=CNTR-1
  1. ;Sexual Orientatin Description #.241
  1. S @VAV@($P(VAS,"^",14),2)=$P($G(^DPT(DFN,.241)),"^")
  1. ;Pronoun #.2406 multiple
  1. K CNTR,X
  1. S CNTR=1,X=0 F S X=$O(^DPT(DFN,.2406,X)) Q:'X!(X="") D
  1. .S PRO=$G(^DPT(DFN,.2406,X,0))
  1. .S @VAV@($P(VAS,"^",14),3,CNTR)=$G(^DG(47.78,PRO,0)),CNTR=CNTR+1 ;NAME ^ CODE
  1. S @VAV@($P(VAS,"^",14),3)=CNTR-1
  1. ;Pronoun Description #.24061
  1. S @VAV@($P(VAS,"^",14),4)=$P($G(^DPT(DFN,.241)),"^",2)
  1. ;SELF IDENTIFIED GENDER #.024
  1. S SIGI=$P($G(^DPT(DFN,.24)),"^",4),SIGIN=$$GET1^DIQ(2,DFN_",",.024)
  1. S @VAV@($P(VAS,"^",14),5)=SIGIN_"^"_SIGI ;NAME ^ CODE
  1. ; DG*5.3*1064; Adding INDIAN SELF IDENTIFICATION, INDIAN ATTESTATION DATE, INDIAN START DATE, INDIAN END DATE [15 - IND]
  1. ; The top level subscript must always be defined (see NOTE above)
  1. S @VAV@($P(VAS,"^",15))=""
  1. N DGINDARR
  1. D GETS^DIQ(2,DFN,".571:.574","I","DGINDARR")
  1. S @VAV@($P(VAS,"^",15),1)=$G(DGINDARR(2,DFN_",",.571,"I"))
  1. S @VAV@($P(VAS,"^",15),2)=$G(DGINDARR(2,DFN_",",.572,"I"))
  1. S @VAV@($P(VAS,"^",15),3)=$G(DGINDARR(2,DFN_",",.573,"I"))
  1. S @VAV@($P(VAS,"^",15),4)=$G(DGINDARR(2,DFN_",",.574,"I"))
  1. Q
  1. ;
  1. 2 ;Other Patient Variables [OPD]
  1. N W,Z
  1. S VAX=^DPT(DFN,0)
  1. ;
  1. ; -- city of birth [1 - BC]
  1. S @VAV@($P(VAS,"^",1))=$P(VAX,"^",11)
  1. ;
  1. ; -- state of birth [2 - BS]
  1. S Z=$P(VAX,"^",12),@VAV@($P(VAS,"^",2))=Z_$S($D(^DIC(5,+Z,0)):"^"_$P(^(0),"^",1),1:"")
  1. ;
  1. ; -- occupation [6 - OC]
  1. S @VAV@($P(VAS,"^",6))=$P(VAX,"^",7)
  1. ;
  1. ; -- names
  1. S VAX=$S($D(^DPT(DFN,.24)):^(.24),1:"")
  1. S @VAV@($P(VAS,"^",3))=$P(VAX,"^",1) ; father's [3 - FN]
  1. S @VAV@($P(VAS,"^",4))=$P(VAX,"^",2) ; mother's [4 - MN]
  1. S @VAV@($P(VAS,"^",5))=$P(VAX,"^",3) ; mother's maiden [5 - MM]
  1. ;
  1. ; -- employment status [7 - ES]
  1. S VAX=$S($D(^DPT(DFN,.311)):^(.311),1:""),W="EMPLOYED FULL TIME^EMPLOYED PART TIME^NOT EMPLOYED^SELF EMPLOYED^RETIRED^ACTIVE MILITARY DUTY^UNKNOWN"
  1. S Z=$P(VAX,"^",15),@VAV@($P(VAS,"^",7))=Z_$S(Z:"^"_$P(W,"^",Z),1:"")
  1. ;
  1. ; -- PHONE NUMBER [WORK] [8 - WP]
  1. I $D(^DPT(DFN,.13)) S @VAV@($P(VAS,"^",8))=$P(^(.13),"^",2)
  1. Q
  1. ;
  1. 3 ;Address [ADD]
  1. N VAFOR
  1. S VABEG=$S($D(VATEST("ADD",9)):VATEST("ADD",9),1:DT),VAEND=$S($D(VATEST("ADD",10)):VATEST("ADD",10),1:DT)
  1. I $S($D(VAPA("P")):1,'$D(^DPT(DFN,.121)):1,$P(^(.121),"^",9)'="Y":1,'$P(^(.121),"^",7):1,$P(^(.121),"^",7)>VABEG:1,'$P(^(.121),"^",8):0,1:$P(^(.121),"^",8)<VAEND) S VAX=$S($D(^DPT(DFN,.11)):^(.11),1:""),VAX(1)=0
  1. E S VAX=$S($D(^DPT(DFN,.121)):^(.121),1:""),VAX(1)=1
  1. ;set the foreign address fields into local variables for later
  1. I 'VAX(1) S VAFOR=$P(VAX,U,8,10)
  1. I VAX(1) D
  1. . I '$D(^DPT(DFN,.122)) S VAFOR="" Q
  1. . S VAFOR=$P(^DPT(DFN,.122),U,1,3)
  1. F I=1:1:6 S VAZ=$P(VAX,"^",I),@VAV@($P(VAS,"^",I))=VAZ I I=5,$D(^DIC(5,+VAZ,0)) S VAZ=$P(^(0),"^"),@VAV@($P(VAS,"^",5))=@VAV@($P(VAS,"^",5))_"^"_VAZ
  1. S VAZ=$S('VAX(1):$P(VAX,"^",7),1:$P(VAX,"^",11)) S:$D(^DIC(5,+$P(VAX,"^",5),1,+VAZ,0)) VAZ=VAZ_"^"_$P(^(0),"^",1) S @VAV@($P(VAS,"^",7))=VAZ
  1. S VAZIP4=$P(VAX,U,12)
  1. S @VAV@($P(VAS,U,11))=VAZIP4_$S('$G(VAZIP4):"",($L(VAZIP4)=5):U_VAZIP4,1:U_$E(VAZIP4,1,5)_"-"_$E(VAZIP4,6,9))
  1. ;DG*5.3*516
  1. I $D(^DPT(DFN,.13)) S @VAV@($P(VAS,"^",8))=$P(^(.13),"^",1)
  1. ;foreign address fields
  1. F I=1:1:3 S VAZ=$P(VAFOR,U,I) S @VAV@($P(VAS,U,I+22))=VAZ
  1. ;
  1. I $P($G(VAFOR),U,3)]"" D
  1. . S VACNTRY=$P(VAFOR,U,3)
  1. . S VACNTRY=$$CNTRYI^DGADDUTL(VACNTRY)
  1. . S $P(@VAV@($P(VAS,U,25)),U,2)=VACNTRY
  1. I 'VAX(1) G CA
  1. S @VAV@($P(VAS,"^",8))=$P(VAX,"^",10)
  1. F I=7,8 S VAZ=$P(VAX,"^",I),Y=VAZ X:Y]"" ^DD("DD") S @VAV@($P(VAS,"^",I+2))=VAZ_"^"_Y
  1. CA ;Confidential Address
  1. ; JAM, Go to Residential Address if no Conf address- VADPT ICR 10061 ;DG*5.3*941
  1. I '$D(^DPT(DFN,.141)) G RES
  1. N VACAT,VAACT,VAACTDT,VATYP,VATYPNAM,VACAN
  1. S VAX=$S($D(^DPT(DFN,.141)):^(.141),1:"")
  1. S VAACTDT=$S($D(VAPA("CD")):VAPA("CD"),1:DT)
  1. F I=1:1:6 S VAZ=$P(VAX,"^",I),@VAV@($P(VAS,"^",I+12))=VAZ D
  1. .I I=5,$D(^DIC(5,+VAZ,0)) S VAZ=$P(^(0),"^"),@VAV@($P(VAS,"^",I+12))=@VAV@($P(VAS,"^",I+12))_"^"_VAZ Q
  1. .I I=6,($G(VAZ)]"") S @VAV@($P(VAS,"^",I+12))=@VAV@($P(VAS,"^",I+12))_"^"_$S(($L(VAZ)=5):VAZ,1:$E(VAZ,1,5)_"-"_$E(VAZ,6,9))
  1. S VAZ=$P(VAX,"^",11) S:$D(^DIC(5,+$P(VAX,"^",5),1,+VAZ,0)) VAZ=VAZ_"^"_$P(^(0),"^",1) S @VAV@($P(VAS,"^",19))=VAZ
  1. F I=7,8 S VAZ=$P(VAX,"^",I),Y=VAZ X:Y]"" ^DD("DD") S @VAV@($P(VAS,"^",I+13))=VAZ_"^"_Y
  1. S VABEG=$P(VAX,"^",7),VAEND=$P(VAX,"^",8)
  1. S @VAV@($P(VAS,"^",12))=1
  1. I 'VABEG!(VABEG>VAACTDT)!(VAEND&(VAEND<VAACTDT)) S @VAV@($P(VAS,"^",12))=0
  1. I $D(^DPT(DFN,.14)) D
  1. .S VACAN="" F S VACAN=$O(^DPT(DFN,.14,VACAN)) Q:VACAN="" D
  1. ..Q:'$D(^DPT(DFN,.14,VACAN,0))
  1. ..S VATYP=$P(^DPT(DFN,.14,VACAN,0),"^",1),VAACT=$P(^DPT(DFN,.14,VACAN,0),"^",2)
  1. ..S VACAT=$$GET1^DID(2.141,.01,"","POINTER","","DGERR")
  1. ..S VATYPNAM="" F I=1:1 S VATYPNAM=$P(VACAT,";",I) Q:VATYPNAM="" D
  1. ...I +VATYPNAM[VATYP S VATYPNAM=$P(VATYPNAM,":",2),@VAV@($P(VAS,"^",22),VATYP)=VATYP_"^"_VATYPNAM_"^"_VAACT
  1. ;foreign address fields for the confidential address
  1. F I=1:1:3 S @VAV@($P(VAS,U,I+25))=$P(VAX,U,I+13)
  1. I @VAV@($P(VAS,U,28))]"" D
  1. . I '$D(^HL(779.004,$P(VAX,U,16),0)) Q
  1. . S $P(@VAV@($P(VAS,U,28)),U,2)=$$CNTRYI^DGADDUTL($P(VAX,U,16))
  1. ; -- CONFIDENTIAL PHONE NUMBER [29 - CPN]
  1. I $D(^DPT(DFN,.13)) S @VAV@($P(VAS,"^",29))=$P(^(.13),"^",15)
  1. RES ;Residential address
  1. ;CLT, Add Residential Address to VADPT ICR 10061 ;DG*5.3*941
  1. I '$D(^DPT(DFN,.115)) G Q3
  1. N DGAR
  1. S DGAR=$G(^DPT(DFN,.115))
  1. F I=1:1:7 S @VAV@(29+I)=$P(DGAR,U,I)
  1. I @VAV@(34)'="",@VAV@(36)'="" I $D(^DIC(5,@VAV@(34),1,@VAV@(36),0)) S VAZ=$P(^DIC(5,@VAV@(34),1,@VAV@(36),0),"^",1),@VAV@(36)=@VAV@(36)_"^"_VAZ
  1. I @VAV@(34)'="" S:$D(^DIC(5,@VAV@(34),0)) @VAV@(34)=@VAV@(34)_"^"_$P(^DIC(5,@VAV@(34),0),U,1)
  1. S @VAV@(37)=$P(DGAR,"^",10)
  1. I @VAV@(37)'="" D
  1. . S VACNTRY=@VAV@(37)
  1. . S VACNTRY=$$CNTRYI^DGADDUTL(VACNTRY)
  1. . S $P(@VAV@(37),U,2)=VACNTRY
  1. S @VAV@(38)=$P(DGAR,"^",8)
  1. S @VAV@(39)=$P(DGAR,"^",9)
  1. ;
  1. Q3 K VABEG,VAEND,VAZIP4 Q
  1. ;
  1. 4 ;Other Address [OAD]
  1. N VAZIP4
  1. I $S('$D(VAOA("A")):1,VAOA("A")<1:1,VAOA("A")>6:1,1:0) S VAX=.21,VAOA("A")=7
  1. E S VAX="."_$P("33^34^211^331^311^25","^",+VAOA("A"))
  1. S VAX(1)=VAX,VAX=$S($D(^DPT(DFN,VAX(1))):^(VAX(1)),1:"") I VAX(1)=.25 S VAX=$P(VAX,"^",1)_"^^"_$P(VAX,"^",2,99)
  1. S VAX(2)=0 F I=3,4,5,6,7,8 S VAX(2)=VAX(2)+1,@VAV@($P(VAS,"^",VAX(2)))=$P(VAX,"^",I)
  1. S @VAV@($P(VAS,"^",7))="",@VAV@($P(VAS,"^",8))=$P(VAX,"^",9),VAX(2)=8
  1. F I=1,2 S VAX(2)=VAX(2)+1,@VAV@($P(VAS,"^",VAX(2)))=$P(VAX,"^",I)
  1. I "^.311^.25"[("^"_VAX(1)_"^") S @VAV@($P(VAS,"^",10))=""
  1. ;DG*5.3*1067 store the RELATION TYPE field, from the PATIENT CONTACT RELATION file(#12.11)file, into node 10
  1. ;and move RELATIONSHIP TO PATIENT to node 12 only for the Emergency Contacts, Next of Kins, and Designees options.
  1. I (+VAOA("A")'=5)&(+VAOA("A")'=6) S @VAV@($P(VAS,"^",10))=$$GET1^DIQ(12.11,$P(VAX,"^",15)_",",.02),@VAV@($P(VAS,"^",12))=$P(VAX,"^",2)
  1. S VAZ=@VAV@($P(VAS,"^",5)) I VAZ,$D(^DIC(5,+VAZ,0)) S VAZ(1)=$P(^(0),"^",1),@VAV@($P(VAS,"^",5))=VAZ_"^"_VAZ(1)
  1. S VAZIP4=$P($G(^DPT(DFN,.22)),U,VAOA("A"))
  1. S @VAV@($P(VAS,U,11))=VAZIP4_$S('$G(VAZIP4):"",($L(VAZIP4)=5):U_VAZIP4,1:U_$E(VAZIP4,1,5)_"-"_$E(VAZIP4,6,9))
  1. Q