1 | PSULR2 ;BIR/PDW - PBM LAB EXTRACT PROCESS PATIENTS ;25 AUG 1998
|
---|
2 | ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
|
---|
3 | ;
|
---|
4 | ;DBIA'S
|
---|
5 | ; Reference to file #2 supported by DBIA 10035
|
---|
6 | ; Reference to file #63 supported by DBIA 2524
|
---|
7 | ;
|
---|
8 | EN ;EP SCAN AND SPLIT INTO DIVISION,RECORDS
|
---|
9 | ; Build ^XTMP(,,"RECORDS",PSUDIV,L)
|
---|
10 | ; Build ^XTMP(,,"PATIENT",DFN,TEST)="" AND THEN
|
---|
11 | ; ,DATE)=RESULT^FLAG
|
---|
12 | K ^XTMP(PSULRSUB,"RECORDS"),^("PATIENTS")
|
---|
13 | ; Gather the tests necessary for each patient
|
---|
14 | S PSUDA="" F S PSUDA=$O(^XTMP(PSULRSUB,"EVENT",PSUDA)) Q:PSUDA'>0 S X=^(PSUDA) D TESTS
|
---|
15 | ;
|
---|
16 | ; with the tests gathered for each patient
|
---|
17 | ; now scan each patients daily lab results looking for the tests
|
---|
18 | D PATIENT
|
---|
19 | Q
|
---|
20 | TESTS ;EP Gather tests for a patient for the drug class
|
---|
21 | ; nodes used in ^XTMP sampler
|
---|
22 | ;^XTMP("PSULR_541074170","CODES","CV800",6) = POTASSIUM
|
---|
23 | ;^XTMP("PSULR_541074170","EVENT",1) = IV^599^13^12345^ASPRIN^CV800
|
---|
24 | ;^XTMP("PSULR_541074170","PATIENT",13,4) = CREATININE
|
---|
25 | ;^XTMP("PSULR_541074170","PATIENT",13,4,7029388.859632) = 1.0^^^50
|
---|
26 | ;^XTMP("PSULR_541074170","PATIENT",13,6) = POTASSIUM
|
---|
27 | ;^XTMP("PSULR_541074170","PATIENT",13,6,7029388.859632) = 5.0^^^50
|
---|
28 | ;
|
---|
29 | ; lab test "ch" node locations for each drug class were built in PSULR1
|
---|
30 | ; Setup "Patient",ch node)="" by codes and tests built in XTMP(,,"CODES",TEST node)=test name
|
---|
31 | ;
|
---|
32 | S PSUDRCD=$P(X,U,6),PSUDFN=$P(X,U,3)
|
---|
33 | S PSULRND=0 F S PSULRND=$O(^XTMP(PSULRSUB,"CODES",PSUDRCD,PSULRND)) Q:PSULRND'>0 S X=^(PSULRND) D
|
---|
34 | . S ^XTMP(PSULRSUB,"PATIENT",PSUDFN,PSULRND)=X
|
---|
35 | Q
|
---|
36 | ;
|
---|
37 | PATIENT ;EP SCAN for each patient their tests needed
|
---|
38 | ;Take ^XTMP(,"PATIENT","CH TEST NODE")=TESTNAME
|
---|
39 | ;scan the lab file
|
---|
40 | ;and build
|
---|
41 | ; ^XTMP(,"PATIENT","CH TEST NODE",DATE)=RESULT^TESTFLAG
|
---|
42 | ;
|
---|
43 | S X1=PSUEDT,X2=-365 D C^%DTC
|
---|
44 | ;S X1=PSUSDT,X2=-365 D C^%DTC
|
---|
45 | S PSULREDT=9999999-X ; only go back one year
|
---|
46 | S PSULRSDT=9999999-PSUSDT
|
---|
47 | ;
|
---|
48 | ; gather needed test (nodes) from ^XTMP and put into the X to PSUNODE array
|
---|
49 | ;
|
---|
50 | S DFN=0 F K X S DFN=$O(^XTMP(PSULRSUB,"PATIENT",DFN)) Q:DFN'>0 M X=^(DFN) D
|
---|
51 | . N PSUNODE
|
---|
52 | . ; psunode("CH" NODE)=test name
|
---|
53 | . M PSUNODE=X
|
---|
54 | . I '$D(^DPT(DFN,"LR")) Q
|
---|
55 | . S PSULRDFN=^DPT(DFN,"LR")
|
---|
56 | . S DA=PSULRSDT F S DA=$O(^LR(PSULRDFN,"CH",DA)) Q:DA'>0 Q:'$D(PSUNODE) Q:DA>PSULREDT D
|
---|
57 | .. ; check each date for each ch node in PSUNODE
|
---|
58 | .. S Y=0 F S Y=$O(PSUNODE(Y)) Q:Y'>0 I $D(^LR(PSULRDFN,"CH",DA,Y)) D
|
---|
59 | ... ;found a test, save result & quit testing for the node
|
---|
60 | ... I '$P(^LR(PSULRDFN,"CH",DA,0),U,3) Q ; results not verified
|
---|
61 | ... S ^XTMP(PSULRSUB,"PATIENT",DFN,Y,DA)=^LR(PSULRDFN,"CH",DA,Y)
|
---|
62 | ... K PSUNODE(Y)
|
---|
63 | ;
|
---|
64 | Q
|
---|
65 | ;
|
---|