1 | SCMCHLB1 ;BPOI/DJB - PCMM HL7 Bld Segment Array Cont.;8/17/99
|
---|
2 | ;;5.3;Scheduling;**177,515,524**;08/17/99;Build 29
|
---|
3 | ;
|
---|
4 | SEGMENTS(DFN,SUB) ;Build EVN & PID segments
|
---|
5 | ;Input:
|
---|
6 | ; DFN - Patient IEN
|
---|
7 | ; SUB - Value for 1st Subscript
|
---|
8 | ;Output:
|
---|
9 | ; XMITARRY() - Array of EVN & PID segments
|
---|
10 | ;
|
---|
11 | NEW LINETAG,SEGMENTS,SEGNAME,SEGORD
|
---|
12 | NEW EVNTDATE,EVNTHL7,VAFARRY,VAFEVN,VAFPID,VAFSTR
|
---|
13 | ;
|
---|
14 | ;Initialize variables
|
---|
15 | Q:'$G(DFN) ;Required for PID segment
|
---|
16 | Q:'$G(SUB)
|
---|
17 | S EVNTDATE=DT
|
---|
18 | S EVNTHL7="A08"
|
---|
19 | ;
|
---|
20 | ;Get array of segments to be built
|
---|
21 | D SEGMENTS^SCMCHLS(EVNTHL7,"SEGMENTS")
|
---|
22 | ;
|
---|
23 | ;Loop thru segments array. Ignore ZPC segment - already built.
|
---|
24 | S SEGORD=0
|
---|
25 | F S SEGORD=+$O(SEGMENTS(SEGORD)) Q:'SEGORD D ;
|
---|
26 | . S SEGNAME=""
|
---|
27 | . F S SEGNAME=$O(SEGMENTS(SEGORD,SEGNAME)) Q:SEGNAME="" D ;
|
---|
28 | .. Q:SEGNAME="ZPC" ;.................ZPC already built
|
---|
29 | .. S VAFSTR=SEGMENTS(SEGORD,SEGNAME) ;String of segment fields
|
---|
30 | .. S LINETAG="BLD"_SEGNAME
|
---|
31 | .. D @LINETAG^SCMCHLS ;...............Build segment
|
---|
32 | .. S LINETAG="CPY"_SEGNAME
|
---|
33 | .. D @LINETAG^SCMCHLS ;...............Copy segment into array
|
---|
34 | Q
|
---|
35 | ;
|
---|
36 | ZPC(ARRAY,DELETE) ;Loop thru array and build array of ZPC segments.
|
---|
37 | ;
|
---|
38 | ;Input:
|
---|
39 | ; ARRAY - Array to be processed. This array was built in ^SCMCHLB
|
---|
40 | ; with calls to $$PRTPC^SCAPMC() and $$PRPTTPC^SCAPMC().
|
---|
41 | ; Examples:
|
---|
42 | ; ARRAY(2290,"PCP","2290-406-34-PCP")= Data
|
---|
43 | ; ARRAY(345,"PROV-P","2290-405-0-AP")= Data
|
---|
44 | ; DELETE - 1=Process a delete type ZPC segment (all fields null)
|
---|
45 | ;Output:
|
---|
46 | ; Array of ZPC segments
|
---|
47 | ;
|
---|
48 | NEW DATA,DATE,ID,ID1,LINETAG,SUB,TYPE,VAFZPC
|
---|
49 | ;
|
---|
50 | S SUB=0
|
---|
51 | F S SUB=$O(ARRAY(SUB)) Q:'SUB D ;
|
---|
52 | . S TYPE=""
|
---|
53 | . F S TYPE=$O(ARRAY(SUB,TYPE)) Q:TYPE="" D ;
|
---|
54 | .. S ID=""
|
---|
55 | .. F S ID=$O(ARRAY(SUB,TYPE,ID)) Q:ID="" D ;
|
---|
56 | ... S DATA=$G(ARRAY(SUB,TYPE,ID))
|
---|
57 | ... I $G(DELETE) S DATA="^^^" ;A Delete type ZPC segment
|
---|
58 | ... E D ;....................A ZPC segment with data
|
---|
59 | .... ;Get dates
|
---|
60 | .... S DATE(9)=$P(DATA,U,9)
|
---|
61 | .... S DATE(10)=$P(DATA,U,10)
|
---|
62 | .... S DATE(14)=$P(DATA,U,14) ;Preceptor start date
|
---|
63 | .... S DATE(15)=$P(DATA,U,15) ;Preceptor end date
|
---|
64 | .... I DATE(14),DATE(14)>DATE(9) S DATE(9)=DATE(14)
|
---|
65 | .... I DATE(15) D ;
|
---|
66 | ..... I 'DATE(10) S DATE(10)=DATE(15) Q
|
---|
67 | ..... I DATE(15)<DATE(10) S DATE(10)=DATE(15)
|
---|
68 | .... ;
|
---|
69 | .... ;Provider^AssignDate^UnassignDate^ProviderType
|
---|
70 | .... S DATA=$P(DATA,U,1)_"^"_DATE(9)_"^"_DATE(10)
|
---|
71 | ....; PATCH 515 DLL ADD NEW ROLES (TPA,CCM,PM)
|
---|
72 | ....; OLD CODE = S DATA=DATA_"^"_$S(ID["AP":"AP",1:"PCP")
|
---|
73 | ....S ROLE=$P(ID,"-",4) I $G(ROLE)="" S ROLE="PCP"
|
---|
74 | ....S DATA=DATA_"^"_ROLE
|
---|
75 | ... ;
|
---|
76 | ... D BLDZPC^SCMCHLS ;..Build segment ; og/sd/524
|
---|
77 | ... D CPYZPC^SCMCHLS ;..Copy segment into array ; og/sd/524
|
---|
78 | Q
|
---|
79 | ;
|
---|
80 | DFN(ND) ;Find DFN from zero node of Patient Team Position Assign (404.43).
|
---|
81 | ;Input:
|
---|
82 | ; ND - Zero node of 404.43
|
---|
83 | ;Output:
|
---|
84 | ; DFN - Patient IEN
|
---|
85 | ; "" - No valid DFN found
|
---|
86 | ;
|
---|
87 | S DFN=$P(ND,U,1)
|
---|
88 | I DFN S DFN=$P($G(^SCPT(404.42,DFN,0)),U,1)
|
---|
89 | Q DFN
|
---|
90 | ;
|
---|
91 | ADJID(ARRAY,SCIEN) ;Adjust ID to include Pt Tm Pos Assign pointer
|
---|
92 | ;Example: From this: 424-34-AP
|
---|
93 | ; To this: 2290-424-34-AP
|
---|
94 | ;Input:
|
---|
95 | ; ARRAY - Array to be processed
|
---|
96 | ; SCIEN - 404.43 IEN to be added to ID
|
---|
97 | ;
|
---|
98 | NEW ADJID,ID,NUM,TMP,TYPE
|
---|
99 | ;
|
---|
100 | ;Build TMP() array using adjusted ID
|
---|
101 | S NUM=0
|
---|
102 | F S NUM=$O(ARRAY(NUM)) Q:'NUM D ;
|
---|
103 | . S TYPE=""
|
---|
104 | . F S TYPE=$O(ARRAY(NUM,TYPE)) Q:TYPE="" D ;
|
---|
105 | .. S ID=""
|
---|
106 | .. F S ID=$O(ARRAY(NUM,TYPE,ID)) Q:ID="" D ;
|
---|
107 | ... S ADJID=SCIEN_"-"_ID ;..Add 404.43 IEN
|
---|
108 | ... S TMP(NUM,TYPE,ADJID)=ARRAY(NUM,TYPE,ID)
|
---|
109 | ;
|
---|
110 | ;Replace ARRAY() with adjusted TMP() array.
|
---|
111 | Q:'$D(TMP)
|
---|
112 | KILL ARRAY
|
---|
113 | M ARRAY=TMP ;Copy TMP() into ARRAY()
|
---|
114 | Q
|
---|
115 | ;
|
---|
116 | CHECK(VARPTR) ;Validate event variable pointer.
|
---|
117 | ;Input:
|
---|
118 | ; VARPTR - EVENT POINTER field of PCMM HL7 EVENT (#404.48)
|
---|
119 | ;Output:
|
---|
120 | ; SCIEN - IEN portion of variable pointer
|
---|
121 | ; SCGLB - Global portion of variable pointer
|
---|
122 | ;Return:
|
---|
123 | ; 0: Invalid variable pointer format
|
---|
124 | ; 1: Valid pointer
|
---|
125 | ; 2: No data. Entry has been deleted. Send a delete to NPCD.
|
---|
126 | ;
|
---|
127 | NEW CHK,GLB
|
---|
128 | ;
|
---|
129 | S SCIEN=$P(VARPTR,";") ;....IEN portion of variable pointer
|
---|
130 | S SCGLB=$P(VARPTR,";",2) ;..Global portion of variable pointer
|
---|
131 | ;
|
---|
132 | ;Return zero if variable pointer is invalid.
|
---|
133 | I 'SCIEN Q 0
|
---|
134 | S CHK=0 D I CHK Q 0
|
---|
135 | . Q:SCGLB="SCPT(404.43,"
|
---|
136 | . Q:SCGLB="SCTM(404.52,"
|
---|
137 | . Q:SCGLB="SCTM(404.53,"
|
---|
138 | . S CHK=1
|
---|
139 | ;
|
---|
140 | ;Is there data for this IEN?
|
---|
141 | S GLB="^"_SCGLB_SCIEN_",0)"
|
---|
142 | I '$D(@GLB) Q 2 ;..Entry has been deleted
|
---|
143 | Q 1
|
---|