[613] | 1 | PXRMPDEM ; SLC/PKR - Computed findings for patient demographics. ;07/21/2006
|
---|
| 2 | ;;2.0;CLINICAL REMINDERS;**5,4**;Feb 04, 2005;Build 21
|
---|
| 3 | ;
|
---|
| 4 | ;======================================================
|
---|
| 5 | AGE(DFN,TEST,DATE,VALUE,TEXT) ;Computed finding for returning a patient's
|
---|
| 6 | ;age
|
---|
| 7 | S DATE=$$NOW^PXRMDATE,TEST=1
|
---|
| 8 | I $D(PXRMPDEM) D Q
|
---|
| 9 | . S VALUE=PXRMPDEM("AGE")
|
---|
| 10 | . I +PXRMPDEM("DOD")=0 S VALUE("DECEASED")=0 Q
|
---|
| 11 | . I +PXRMPDEM("DOD")>0 S VALUE("DECEASED")=1,TEXT="Patient is deceased"
|
---|
| 12 | I '$D(PXRMPDEM) D
|
---|
| 13 | . N DOB,DOD
|
---|
| 14 | .;DBIA #10035
|
---|
| 15 | . S DOB=$P(^DPT(DFN,0),U,3)
|
---|
| 16 | . S DOD=$P($G(^DPT(DFN,.35)),U,1)
|
---|
| 17 | . S VALUE=$$AGE^PXRMAGE(DOB,DOD,$$NOW^PXRMDATE)
|
---|
| 18 | . I +DOD=0 S VALUE("DECEASED")=0 Q
|
---|
| 19 | . I +DOD>0 S VALUE("DECEASED")=1,TEXT="Patient is deceased"
|
---|
| 20 | Q
|
---|
| 21 | ;
|
---|
| 22 | ;======================================================
|
---|
| 23 | DISCHDT(DFN,TEST,DATE,VALUE,TEXT) ;This computed finding will return
|
---|
| 24 | ;the most recent service separation date.
|
---|
| 25 | N CNT,IRW,VAROOT
|
---|
| 26 | S VAROOT="IRW"
|
---|
| 27 | D SVC^VADPT
|
---|
| 28 | S VALUE=$P($G(IRW(6,5)),U)
|
---|
| 29 | I VALUE="" S TEST=0 D KVA^VADPT Q
|
---|
| 30 | S DATE=VALUE,TEST=1
|
---|
| 31 | S TEXT="Last Service Separation date: "_$$EDATE^PXRMDATE(VALUE)_" Branch of Service: "_$P($G(IRW(6,1)),U,2)
|
---|
| 32 | D KVA^VADPT
|
---|
| 33 | Q
|
---|
| 34 | ;
|
---|
| 35 | ;======================================================
|
---|
| 36 | DOB(DFN,TEST,DATE,VALUE,TEXT) ;Computed finding for a patient's
|
---|
| 37 | ;date of birth.
|
---|
| 38 | I $D(PXRMPDEM) S VALUE=PXRMPDEM("DOB")
|
---|
| 39 | ;DBIA #10035 DATE OF BIRTH is a required field.
|
---|
| 40 | I '$D(PXRMPDEM) S VALUE=$P(^DPT(DFN,0),U,3)
|
---|
| 41 | S TEST=$S(VALUE<$$NOW^PXRMDATE:1,1:0)
|
---|
| 42 | I TEST S DATE=VALUE,TEXT=$$EDATE^PXRMDATE(VALUE)
|
---|
| 43 | Q
|
---|
| 44 | ;
|
---|
| 45 | ;======================================================
|
---|
| 46 | DOD(DFN,TEST,DATE,VALUE,TEXT) ;Computed finding for a patient's
|
---|
| 47 | ;date of death.
|
---|
| 48 | I $D(PXRMPDEM) S VALUE=+PXRMPDEM("DOD")
|
---|
| 49 | ;DBIA #10035
|
---|
| 50 | I '$D(PXRMPDEM) S VALUE=+$P($G(^DPT(DFN,.35)),U,1)
|
---|
| 51 | S TEST=$S(VALUE=0:0,VALUE>$$NOW^PXRMDATE:0,1:1)
|
---|
| 52 | I TEST S DATE=VALUE,TEXT=$$EDATE^PXRMDATE(VALUE)
|
---|
| 53 | Q
|
---|
| 54 | ;
|
---|
| 55 | ;======================================================
|
---|
| 56 | ETHNY(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,VALUE,TEXT) ;Computed finding for
|
---|
| 57 | ;a patient's ethnicity.
|
---|
| 58 | N CNT,CNT1,VADM
|
---|
| 59 | D DEM^VADPT
|
---|
| 60 | I $D(VADM(11))'=11 S NFOUND=0 D KVA^VADPT Q
|
---|
| 61 | S NGET=$S(NGET<0:-NGET,1:NGET)
|
---|
| 62 | S (CNT,CNT1)=0
|
---|
| 63 | F S CNT=$O(VADM(11,CNT)) Q:(CNT="")!(CNT1=NGET) D
|
---|
| 64 | . S CNT1=CNT1+1,TEST(CNT1)=1,DATE(CNT1)=$$NOW^PXRMDATE
|
---|
| 65 | . S TEXT(CNT1)="",VALUE(CNT1,"VALUE")=$P($G(VADM(11,CNT)),U,2)
|
---|
| 66 | S NFOUND=CNT1
|
---|
| 67 | D KVA^VADPT
|
---|
| 68 | Q
|
---|
| 69 | ;
|
---|
| 70 | ;======================================================
|
---|
| 71 | HDISCH(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,DATA,TEXT) ;Computed finding for
|
---|
| 72 | ;a list of a patient's discharge dates from PTF.
|
---|
| 73 | ;References to ^DGPT covered by DBIA #1372.
|
---|
| 74 | N DAS,DDATE,DDATEL,DONE,FEEBASIS,IEN,IND,INCEN,INFEE,NF,SDIR,TEMP,TYPE
|
---|
| 75 | S TEMP=$$UP^XLFSTR(TEST)
|
---|
| 76 | S TEMP=$P(TEMP,"IN:",2)
|
---|
| 77 | S INFEE=$S(TEMP["FEE":1,1:0)
|
---|
| 78 | S INCEN=$S(TEMP["CEN":1,1:0)
|
---|
| 79 | S IEN="",NFOUND=0
|
---|
| 80 | F S IEN=$O(^DGPT("B",DFN,IEN)) Q:IEN="" D
|
---|
| 81 | . S DDATE=+$P($G(^DGPT(IEN,70)),U,1)
|
---|
| 82 | . I DDATE>0,DDATE'<BDT,DDATE'>EDT S NFOUND=NFOUND+1,DDATEL(DDATE,NFOUND)=^DGPT(IEN,0)
|
---|
| 83 | I NFOUND=0 Q
|
---|
| 84 | S SDIR=$S(NGET<0:1,1:-1)
|
---|
| 85 | S NGET=$S(NGET<0:-NGET,1:NGET)
|
---|
| 86 | S (DONE,NF)=0
|
---|
| 87 | S DDATE=""
|
---|
| 88 | F IND=1:1:NFOUND Q:DONE D
|
---|
| 89 | . S DDATE=$O(DDATEL(DDATE),SDIR)
|
---|
| 90 | . I DDATE="" S DONE=1 Q
|
---|
| 91 | . S IEN=0
|
---|
| 92 | . F S IEN=$O(DDATEL(DDATE,IEN)) Q:(IEN="")!(DONE) D
|
---|
| 93 | .. S FEEBASIS=$P(DDATEL(DDATE,IEN),U,4)
|
---|
| 94 | .. I FEEBASIS=1,'INFEE Q
|
---|
| 95 | ..;Type 1 is PTF, Type 2 is Census
|
---|
| 96 | .. S TYPE=$P(DDATEL(DDATE,IEN),U,11)
|
---|
| 97 | .. I TYPE=2,'INCEN Q
|
---|
| 98 | .. S NF=NF+1
|
---|
| 99 | .. S TEST(NF)=1,(DATE(NF),VALUE(NF))=DDATE
|
---|
| 100 | .. I FEEBASIS=1 S TEXT(NF)="Fee basis"
|
---|
| 101 | .. I TYPE=2 S TEXT(NF)="Census"
|
---|
| 102 | .. I NF=NGET S DONE=1
|
---|
| 103 | S NFOUND=NF
|
---|
| 104 | Q
|
---|
| 105 | ;
|
---|
| 106 | ;======================================================
|
---|
| 107 | NEWRACE(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,VALUE,TEXT) ;Computed finding
|
---|
| 108 | ;for returning a patient's multi-valued race.
|
---|
| 109 | N CNT,CNT1,IND,VADM
|
---|
| 110 | D DEM^VADPT
|
---|
| 111 | I $D(VADM(12))'=11 S NFOUND=0 D KVA^VADPT Q
|
---|
| 112 | S NGET=$S(NGET<0:-NGET,1:NGET)
|
---|
| 113 | S (CNT,CNT1)=0
|
---|
| 114 | F S CNT=$O(VADM(12,CNT)) Q:(CNT="")!(CNT1=NGET) D
|
---|
| 115 | . S CNT1=CNT1+1,TEST(CNT1)=1,DATE(CNT1)=$$NOW^PXRMDATE
|
---|
| 116 | . S TEXT(CNT1)="",VALUE(CNT1,"VALUE")=$P($G(VADM(12,CNT)),U,2)
|
---|
| 117 | F CNT=1:1:CNT1 F IND=1:1:CNT1 S VALUE(CNT,"RACE",IND)=VALUE(IND,"VALUE")
|
---|
| 118 | S NFOUND=CNT1
|
---|
| 119 | D KVA^VADPT
|
---|
| 120 | Q
|
---|
| 121 | ;
|
---|
| 122 | ;======================================================
|
---|
| 123 | PATTYPE(DFN,TEST,DATE,VALUE,TEXT) ;Computed finding to return the patient
|
---|
| 124 | ;type
|
---|
| 125 | N VAEL
|
---|
| 126 | S VALUE=""
|
---|
| 127 | S DATE=$$NOW^PXRMDATE
|
---|
| 128 | D ELIG^VADPT
|
---|
| 129 | S TEST=$S($G(VAEL(6))'="":1,1:0)
|
---|
| 130 | S VALUE=$P(VAEL(6),U,2)
|
---|
| 131 | D KVA^VADPT
|
---|
| 132 | Q
|
---|
| 133 | ;======================================================
|
---|
| 134 | RACE(DFN,TEST,DATE,VALUE,TEXT) ;Computed finding for checking a patient's race.
|
---|
| 135 | N RACE
|
---|
| 136 | S DATE=$$NOW^PXRMDATE
|
---|
| 137 | ;DBIA #10035
|
---|
| 138 | S RACE=$P($G(^DPT(DFN,0)),U,6)
|
---|
| 139 | I RACE="" S TEST=0,VALUE="" Q
|
---|
| 140 | Q
|
---|
| 141 | ;
|
---|
| 142 | ;======================================================
|
---|
| 143 | SEX(DFN,TEST,DATE,VALUE,TEXT) ;Computed finding for returning a patient's
|
---|
| 144 | ;sex.
|
---|
| 145 | S DATE=$$NOW^PXRMDATE,TEST=1
|
---|
| 146 | I $D(PXRMPDEM) S VALUE=PXRMPDEM("SEX") Q
|
---|
| 147 | ;DBIA #10035 SEX is a required field.
|
---|
| 148 | I '$D(PXRMPDEM) S VALUE=$P(^DPT(DFN,0),U,2)
|
---|
| 149 | Q
|
---|
| 150 | ;
|
---|
| 151 | ;======================================================
|
---|
| 152 | VETERAN(DFN,TEST,DATE,VALUE,TEXT) ;Computed finding for checking if a
|
---|
| 153 | ;patient is a veteran.
|
---|
| 154 | N VAEL
|
---|
| 155 | S DATE=$$NOW^PXRMDATE
|
---|
| 156 | D ELIG^VADPT
|
---|
| 157 | S TEST=VAEL(4)
|
---|
| 158 | S VALUE=""
|
---|
| 159 | D KVA^VADPT
|
---|
| 160 | Q
|
---|
| 161 | ;
|
---|