1 | DGROHLU ;DJH/AMA - ROM HL7 BUILD ORF SEGMENT ; 03 May 2004 12:21 PM
|
---|
2 | ;;5.3;Registration;**533,572**;Aug 13, 1993
|
---|
3 | ;
|
---|
4 | Q
|
---|
5 | ;
|
---|
6 | DIQ(DGROFDA,FILE,DFN,DGQRY) ;GATHER THE PATIENT DATA USING GETS^DIQ
|
---|
7 | ;Called from BLDORF^DGROHLQ
|
---|
8 | ; INPUT:
|
---|
9 | ; DGROFDA = ROOT FILE NAME OF TEMP GLOBAL ARRAY, ^TMP("DGROFDA",$J)
|
---|
10 | ; FILE = FILE FROM WHICH TO GATHER THE DATA
|
---|
11 | ; DFN = POINTER TO PATIENT (#2) FILE
|
---|
12 | ; DGQRY = ARRAY OF PARSED "QRY" DATA ;DG*5.3*572
|
---|
13 | ;
|
---|
14 | ; OUTPUT:
|
---|
15 | ; GLOBAL ARRAY OF REQUESTED DATA ELEMENTS, IN DGROFDA
|
---|
16 | ;
|
---|
17 | ;THIS ROUTINE ALSO CHECKS THE DG REGISTER ONCE FIELD DEFINITION
|
---|
18 | ;(#391.23) FILE TO ENSURE EACH DATA ELEMENT IS REQUESTED.
|
---|
19 | ;
|
---|
20 | N U,FLAG,FIELD,TMPFLD,F,IEN,CNT,F1,F2,F3,F4,EIEN,STATEIEN,CNTYIEN,CNTY
|
---|
21 | ;
|
---|
22 | ;BUILD THE INITIAL DATA ELEMENT GLOBAL ARRAY
|
---|
23 | ;* County name is sent instead of number (avoid duplicate on number)
|
---|
24 | ;* Direct global reads of STATE file, COUNTY multiple supported with
|
---|
25 | ;* IA #10056
|
---|
26 | ;
|
---|
27 | S U="^",FLAG="EN" ;*Get External value (DG*5.3*572)
|
---|
28 | S (STATEIEN,CNTYIEN)=""
|
---|
29 | S FILE=0
|
---|
30 | ;
|
---|
31 | F S FILE=$O(^DGRO(391.23,"C",FILE)) Q:'FILE D
|
---|
32 | . I (FILE=2.01)!(FILE=2.02)!(FILE=2.06)!(FILE=2.141) Q
|
---|
33 | . S FIELD=0
|
---|
34 | . F S FIELD=$O(^DGRO(391.23,"C",FILE,FIELD)) Q:'FIELD D
|
---|
35 | . . S (CNTY,CNTYIEN,STATEIEN)=0
|
---|
36 | . . I FILE=2 DO
|
---|
37 | . . . I (FIELD=.117),($D(^DPT(DFN,.11))) DO
|
---|
38 | . . . . S STATEIEN=$P(^DPT(DFN,.11),"^",5)
|
---|
39 | . . . . S CNTYIEN=$P(^DPT(DFN,.11),"^",7)
|
---|
40 | . . . . S:((+STATEIEN>0)&(+CNTYIEN>0)) @DGROFDA@(FILE,DFN,FIELD,"E")=$P(^DIC(5,STATEIEN,1,CNTYIEN,0),"^",1)
|
---|
41 | . . . . S CNTY=1
|
---|
42 | . . . I (FIELD=.12111),($D(^DPT(DFN,.121))) DO
|
---|
43 | . . . . S STATEIEN=$P(^DPT(DFN,.121),"^",5)
|
---|
44 | . . . . S CNTYIEN=$P(^DPT(DFN,.121),"^",11)
|
---|
45 | . . . . S:((+STATEIEN>0)&(+CNTYIEN>0)) @DGROFDA@(FILE,DFN,FIELD,"E")=$P(^DIC(5,STATEIEN,1,CNTYIEN,0),"^",1)
|
---|
46 | . . . . S CNTY=1
|
---|
47 | . . . I (FIELD=.14111),($D(^DPT(DFN,.141))) DO
|
---|
48 | . . . . S STATEIEN=$P(^DPT(DFN,.141),"^",5)
|
---|
49 | . . . . S CNTYIEN=$P(^DPT(DFN,.141),"^",11)
|
---|
50 | . . . . S:((+STATEIEN>0)&(+CNTYIEN>0)) @DGROFDA@(FILE,DFN,FIELD,"E")=$P(^DIC(5,STATEIEN,1,CNTYIEN,0),"^",1)
|
---|
51 | . . . . S CNTY=1
|
---|
52 | . . D:(CNTY=0) GETS^DIQ(FILE,DFN,FIELD,FLAG,DGROFDA)
|
---|
53 | ;
|
---|
54 | ;IF THERE'S NO DATE OF DEATH, KILL ALL OTHER DoD FIELDS
|
---|
55 | I '$D(@DGROFDA@(2,DFN_",",.351)) F FIELD=.351:.001:.355 K @DGROFDA@(2,DFN_",",FIELD)
|
---|
56 | ;
|
---|
57 | ;GET INTERNAL AND EXTERNAL VALUES - ALIAS, RACE, AND ETHNICITY SUB-FILES
|
---|
58 | F FILE=2.01,2.02,2.06,2.141 D
|
---|
59 | . N SBFL,SBDA,SBFLD
|
---|
60 | . S FLAG="IEN" ;*Get Internal and External; no Null values (DG*5.3*572)
|
---|
61 | . S SBFL=FILE-2 I FILE=2.141 S SBFL=.14
|
---|
62 | . S SBDA=0 F S SBDA=$O(^DPT(DFN,SBFL,SBDA)) Q:'SBDA D
|
---|
63 | . . S SBFLD=0 F S SBFLD=$O(^DGRO(391.23,"C",FILE,SBFLD)) Q:'SBFLD D
|
---|
64 | . . . D GETS^DIQ(FILE,SBDA_","_DFN,SBFLD,FLAG,DGROFDA)
|
---|
65 | ;ENSURE THE RACE DATA IS ACTIVE
|
---|
66 | S IEN="" F S IEN=$O(@DGROFDA@(2.02,IEN)) Q:IEN="" D
|
---|
67 | . N RIEN,MIEN
|
---|
68 | . S RIEN=$G(@DGROFDA@(2.02,IEN,.01,"I"))
|
---|
69 | . I $$GET1^DIQ(10,RIEN,200,"I") K @DGROFDA@(2.02,IEN) Q
|
---|
70 | . K @DGROFDA@(2.02,IEN,.01,"I")
|
---|
71 | . K @DGROFDA@(2.02,IEN,.02,"I")
|
---|
72 | ;ENSURE THE ETHNICITY DATA IS ACTIVE
|
---|
73 | S IEN="" F S IEN=$O(@DGROFDA@(2.06,IEN)) Q:IEN="" D
|
---|
74 | . N EIEN,MIEN
|
---|
75 | . S EIEN=$G(@DGROFDA@(2.06,IEN,.01,"I"))
|
---|
76 | . I $$GET1^DIQ(10.2,EIEN,200,"I") K @DGROFDA@(2.06,IEN) Q
|
---|
77 | . K @DGROFDA@(2.06,IEN,.01,"I")
|
---|
78 | . K @DGROFDA@(2.06,IEN,.02,"I")
|
---|
79 | ;
|
---|
80 | ;CHECK FOR SENSITIVE PATIENT; IF SO, THEN PUT THE QUERY SITE (QS)
|
---|
81 | ;USER IN THE NEW PERSON (#200) FILE, RECORD THE ACCESS IN THE
|
---|
82 | ;SECURITY LOG, AND SEND A MAIL BULLETIN TO THE ISO. ;DG*5.3*572
|
---|
83 | I $D(@DGROFDA@(38.1)) D
|
---|
84 | . N DGREMS,DGREMN,DGUSER
|
---|
85 | . S DGREMS=$$IEN^XUAF4(DGQRY("SNDFAC")) ;QS Institution File (#4) IEN
|
---|
86 | . S DGREMN=$P($$NS^XUAF4(DGREMS),U) ;Get QS Station Name
|
---|
87 | . S DGUSER=$TR(DGQRY("USER"),"~",U) ;Get QS user data
|
---|
88 | . ;
|
---|
89 | . ;Build input for New Person File
|
---|
90 | . ;(format: SSN^Name^Station Name^Station #^Remote DUZ^Phone)
|
---|
91 | . S DGUSER=$P(DGUSER,U,1,2)_U_DGREMN_U_DGQRY("SNDFAC")_U_$P(DGUSER,U,3,4)
|
---|
92 | . I '$$PUT^XUESSO1(DGUSER) K @DGROFDA Q
|
---|
93 | . ;
|
---|
94 | . S DUZ=$$FIND1^DIC(200,"","",$P(DGUSER,U),"SSN","")
|
---|
95 | . S EVENT="DGRO ROM QRY/R02 EVENT"
|
---|
96 | . D SETLOG1^DGSEC(DFN,DUZ,0,U_EVENT) ;Create Security Log entry
|
---|
97 | . D BULTIN1^DGSEC(DFN,DUZ,U_EVENT) ;Send ISO mail bulletin
|
---|
98 | Q
|
---|
99 | ;
|
---|
100 | FDA(DGWRK,DGCURLIN,DGFS,DGCS,DGRS,DGDATA) ;Download patient data from Last Site Treated
|
---|
101 | ;Called from PARSORF^DGROHLQ3
|
---|
102 | ; Input:
|
---|
103 | ; DGWRK - Root global with all of the patient data segments, ^TMP("DGROHL7",$J)
|
---|
104 | ; DGCNT - Counter for the root global subscript
|
---|
105 | ; DGFS - HL7 field separator
|
---|
106 | ; DGCS - HL7 component separator
|
---|
107 | ; DGRS - HL7 repetition separator
|
---|
108 | ;
|
---|
109 | ; Output:
|
---|
110 | ; DGDATA - Root global for the patient data to upload, ^TMP("DGROFDA",$J)
|
---|
111 | ;
|
---|
112 | N DGSUBS,DGVAL,DGFILE,DGIEN,DGFIELD,DGINT,DGRODA
|
---|
113 | ;
|
---|
114 | S DGCURLIN=DGCURLIN-1
|
---|
115 | F S DGCURLIN=$O(@DGWRK@(DGCURLIN)) Q:'DGCURLIN D
|
---|
116 | . N DGSEG
|
---|
117 | . S DGSEG=$P(@DGWRK@(DGCURLIN,0),DGFS,2)
|
---|
118 | . S DGSUBS=$P(DGSEG,DGRS),DGVAL=$P(DGSEG,DGRS,2)
|
---|
119 | . S DGFILE=$P(DGSUBS,DGCS),DGIEN=$P(DGSUBS,DGCS,2)
|
---|
120 | . S DGFIELD=$P(DGSUBS,DGCS,3),DGINT=$P(DGVAL,DGCS)
|
---|
121 | . ;
|
---|
122 | . I '$D(^DGRO(391.23,"C",DGFILE,DGFIELD)) Q
|
---|
123 | . ;
|
---|
124 | . ;BUILD/STORE EXTERNAL VALUES INTO ;*DG*5.3*572
|
---|
125 | . ; ^TMP("DGROFDA",$J,FILE,IEN,FIELD,"E")=VALUE
|
---|
126 | . S @DGDATA@(DGFILE,DGIEN,DGFIELD,"E")=DGINT
|
---|
127 | Q
|
---|