| 1 | WVLABADD ;HCIOFO/FT-SAVE A LAB TEST AS A WH PROCEDURE ;5/10/99  12:10 | 
|---|
| 2 | ;;1.0;WOMEN'S HEALTH;**6**;Sep 30, 1998 | 
|---|
| 3 | ; | 
|---|
| 4 | EN ; Entry point from [WV SAVE LAB TEST] option. | 
|---|
| 5 | ; Converts a lab test stored in the WV LAB TESTS file (#790.08) | 
|---|
| 6 | ; into an entry in the WV PROCEDURES file (#790.1) | 
|---|
| 7 | N WVDICB | 
|---|
| 8 | S (WVDICB,WVPOP)=0 | 
|---|
| 9 | F  D  Q:WVPOP | 
|---|
| 10 | .D SELECT Q:WVPOP | 
|---|
| 11 | .D DISPLAY | 
|---|
| 12 | .Q | 
|---|
| 13 | D KILL | 
|---|
| 14 | Q | 
|---|
| 15 | SELECT ; Select a lab test entry from File 790.08 | 
|---|
| 16 | N DIC,DTOUT,DUOUT,WVDFN | 
|---|
| 17 | S DIC="^WV(790.08,",DIC(0)="AEMQZ" | 
|---|
| 18 | S DIC("A")="Select Lab Test Accession#: " | 
|---|
| 19 | D DEFAULT | 
|---|
| 20 | D ^DIC | 
|---|
| 21 | I Y<0!($D(DTOUT))!($D(DUOUT)) S WVPOP=1 Q | 
|---|
| 22 | S WVIEN=+Y | 
|---|
| 23 | S WVDFN=+$P(^WV(790.08,+Y,0),U,2) | 
|---|
| 24 | S:WVDFN ^DISV(DUZ,"^DPT(")=WVDFN ;space bar/return save for File 790 | 
|---|
| 25 | Q | 
|---|
| 26 | DISPLAY ; Display lab test data | 
|---|
| 27 | Q:'$G(WVIEN) | 
|---|
| 28 | N LRDFN,LRSS,WVDATE,WVLABACC,WVNAME,WVNODE,WVVALUE | 
|---|
| 29 | S WVNODE=$G(^WV(790.08,+WVIEN,0)) | 
|---|
| 30 | Q:WVNODE="" | 
|---|
| 31 | S WVLABACC=$P(WVNODE,U,1) ;lab accession# | 
|---|
| 32 | S LRDFN=$P(WVNODE,U,36) ;File 63 ien (+^DPT(DFN,"LR")) | 
|---|
| 33 | S WVDATE=$P(WVNODE,U,37) ;File 63 inverse date/time | 
|---|
| 34 | S LRSS=$P(WVNODE,U,38) ;File 63 subscript (CY or SP) | 
|---|
| 35 | I WVLABACC=""!(LRDFN="")!(WVDATE="")!(LRSS="") D  Q | 
|---|
| 36 | .W !,"Sorry, lab test "_WVLABACC_" is not available after all." | 
|---|
| 37 | .W !,"Will delete this lab test from the list of choices.",! | 
|---|
| 38 | .D DELETE(WVIEN) | 
|---|
| 39 | .Q | 
|---|
| 40 | I $D(^WV(790.1,"F",WVLABACC)) D  Q | 
|---|
| 41 | .S WVVALUE=$O(^WV(790.1,"F",WVLABACC,0)) | 
|---|
| 42 | .S WVVALUE=$P($G(^WV(790.1,WVVALUE,0)),U,1) | 
|---|
| 43 | .W !,"Sorry, lab test "_WVLABACC_" is already saved as a procedure." | 
|---|
| 44 | .W !,"It is logged as WH accession# "_WVVALUE_"." | 
|---|
| 45 | .W !,"Will delete this lab test from the list of choices.",! | 
|---|
| 46 | .D DELETE(WVIEN) | 
|---|
| 47 | .Q | 
|---|
| 48 | K ^TMP("WVLAB",$J) | 
|---|
| 49 | D HS^WVLABWP ;call Health Summary, returns lab data in ^TMP("WVLAB",$J) | 
|---|
| 50 | I '$D(^TMP("WVLAB",$J)) D  Q | 
|---|
| 51 | .W !,"Sorry, lab test data is not available for this choice." | 
|---|
| 52 | .W !,"Will delete this lab test from the list of choices.",! | 
|---|
| 53 | .D DELETE(WVIEN) | 
|---|
| 54 | .Q | 
|---|
| 55 | S WVNAME=$P(WVNODE,U,2) ;dfn | 
|---|
| 56 | S WVNAME=$$GET1^DIQ(2,WVNAME,.01,"E") ;get patient name for Browser call | 
|---|
| 57 | D BROWSE^DDBR("^TMP(""WVLAB"",$J)","N",WVNAME) | 
|---|
| 58 | KEEP ; Save lab test as procedure OR delete lab test from File 790.08 OR | 
|---|
| 59 | ; ignore it for now. | 
|---|
| 60 | N DIR | 
|---|
| 61 | S DIR(0)="S^A:add to the WH package;D:delete from the list of choices;I:ignore for now" | 
|---|
| 62 | S DIR("A")="What action should be taken with this lab test" | 
|---|
| 63 | S DIR("?",1)="Please determine what to do with this lab test." | 
|---|
| 64 | S DIR("?",2)="  Ignore this lab test for now." | 
|---|
| 65 | S DIR("?",3)="  Delete from the list. It shouldn't be a Women's Health procedure." | 
|---|
| 66 | S DIR("?")="  Add this lab test as a Women's Health procedure entry." | 
|---|
| 67 | D ^DIR | 
|---|
| 68 | I $D(DIRUT) S WVPOP=1 Q | 
|---|
| 69 | I Y="I" Q | 
|---|
| 70 | I Y="D" D DELETE(WVIEN) Q | 
|---|
| 71 | I Y="A" D CONVERT | 
|---|
| 72 | Q | 
|---|
| 73 | CONVERT ; Add the lab test data to the WV PROCEDURE file (#790.1) | 
|---|
| 74 | Q:'$G(WVIEN) | 
|---|
| 75 | N DFN,DIC,DTOUT,DUOUT | 
|---|
| 76 | N WVDATE,WVDR,WVERR,WVNODE,WVPROC | 
|---|
| 77 | S WVNODE=$G(^WV(790.08,+WVIEN,0)) | 
|---|
| 78 | S DIC="^WV(790.2,",DIC(0)="AEMQZ" | 
|---|
| 79 | S DIC("A")="Select the procedure type for this lab test: " | 
|---|
| 80 | D ^DIC | 
|---|
| 81 | W ! | 
|---|
| 82 | I Y<0!($D(DTOUT))!($D(DUOUT)) S WVPOP=1 Q | 
|---|
| 83 | S WVPROC=+Y | 
|---|
| 84 | S WVERR=1,DFN=$P(WVNODE,U,2),WVDATE=$P(WVNODE,U,12) | 
|---|
| 85 | I '$D(^WV(790,DFN,0)) D  ;add patient to File 790, if not there | 
|---|
| 86 | .D AUTOADD^WVPATE(DFN,DUZ(2),.WVERR) | 
|---|
| 87 | .Q | 
|---|
| 88 | Q:WVERR<0  ;quit if new patient could not be added to File 790 | 
|---|
| 89 | D FIND^WVLABAD1 ;check for 'unlinked' entry in File 790.1 | 
|---|
| 90 | I $D(^WV(790.1,"F",WVLABACC)) D  Q  ;link was made to existing entry | 
|---|
| 91 | .D DELETE(WVIEN) ;delete lab test from list of choices | 
|---|
| 92 | .S Y=+$O(^WV(790.1,"F",WVLABACC,0)) ;ien of procedure entry | 
|---|
| 93 | .D EDIT ;edit procedure entry | 
|---|
| 94 | .Q | 
|---|
| 95 | S WVDR=".02////"_DFN | 
|---|
| 96 | S WVDR=WVDR_";.04////"_WVPROC ;File 790.2 pointer | 
|---|
| 97 | S:$P(WVNODE,U,7)]"" WVDR=WVDR_";.07////"_$P(WVNODE,U,7) ;provider | 
|---|
| 98 | S WVDR=WVDR_";.1////"_$G(DUZ(2)) ;health care facility | 
|---|
| 99 | S:$P(WVNODE,U,11)]"" WVDR=WVDR_";.11////"_$P(WVNODE,U,11) ;patient location | 
|---|
| 100 | S WVDR=WVDR_";.12////"_$P(WVNODE,U,12) ;procedure date/time | 
|---|
| 101 | S WVDR=WVDR_";.14////"_"o" ;status | 
|---|
| 102 | S WVDR=WVDR_";.18////.5;.19////"_DT ;entering user and date | 
|---|
| 103 | S WVDR=WVDR_";.34////"_$G(DUZ(2)) ;accessioning facility | 
|---|
| 104 | S WVDR=WVDR_";2.17////"_$P(WVNODE,U,1) ;lab accession# | 
|---|
| 105 | S WVDR=WVDR_";2.18////"_$P(WVNODE,U,36) ;Lab Data file (#63) pointer | 
|---|
| 106 | S WVDR=WVDR_";2.19////"_$P(WVNODE,U,37) ;Lab Data file inverse d/t | 
|---|
| 107 | S WVDR=WVDR_";2.2////"_$P(WVNODE,U,38) ;Lab Data file subscript (CY/SP) | 
|---|
| 108 | ; add procedure to File 790.1 | 
|---|
| 109 | D NEW2^WVPROC(DFN,WVPROC,WVDATE,WVDR,"","",.WVERR) | 
|---|
| 110 | I Y D DELETE(WVIEN) | 
|---|
| 111 | I Y D EDIT | 
|---|
| 112 | Q | 
|---|
| 113 | KILL ; Kill variables | 
|---|
| 114 | K WVIEN,WVPOP,X,Y | 
|---|
| 115 | K ^TMP("WVLAB",$J) | 
|---|
| 116 | Q | 
|---|
| 117 | DELETE(WVIEN) ; Delete an entry from File 790.08 | 
|---|
| 118 | Q:'$G(WVIEN) | 
|---|
| 119 | N DA,DIK,Y | 
|---|
| 120 | S DA=WVIEN,DIK="^WV(790.08," | 
|---|
| 121 | D ^DIK | 
|---|
| 122 | Q | 
|---|
| 123 | EDIT ; Edit WV PROCEDURE (#790.1) file entry | 
|---|
| 124 | Q:'$G(Y) | 
|---|
| 125 | D LT^WVPROC ;edit the new entry | 
|---|
| 126 | S WVPOP=0 ;reset WVPOP which is killed by ^WVPROC call | 
|---|
| 127 | Q | 
|---|
| 128 | DEFAULT ; Find next default look-up value. | 
|---|
| 129 | ; WVQUIT - ien of File 790.08 entry | 
|---|
| 130 | ; WVDICB - last entry checked (don't show an entry they bypassed) | 
|---|
| 131 | N WVLOOP,WVNODE,WVQUIT | 
|---|
| 132 | Q:$G(WVDICB)="" | 
|---|
| 133 | S WVQUIT=0,WVLOOP=+WVDICB | 
|---|
| 134 | F  S WVLOOP=$O(^WV(790.08,WVLOOP)) Q:'WVLOOP  D  Q:WVQUIT | 
|---|
| 135 | .S WVNODE=$G(^WV(790.08,WVLOOP,0)) Q:WVNODE="" | 
|---|
| 136 | .I $P(WVNODE,U,7)=DUZ D  Q  ;duz is requesting provider | 
|---|
| 137 | ..S (WVDICB,WVQUIT)=WVLOOP | 
|---|
| 138 | ..Q | 
|---|
| 139 | .I $P($G(^WV(790,+$P(WVNODE,U,2),0)),U,10)=DUZ D  ;case mgr | 
|---|
| 140 | ..S (WVDICB,WVQUIT)=WVLOOP | 
|---|
| 141 | ..Q | 
|---|
| 142 | .Q | 
|---|
| 143 | S DIC("B")=$S(WVQUIT:$P(^WV(790.08,+WVQUIT,0),U,1),1:"") | 
|---|
| 144 | K:DIC("B")="" DIC("B") | 
|---|
| 145 | Q | 
|---|