| 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
 | 
|---|