| 1 | HLEMSL ;ALB/CJM -List Manager Screen for Event List;12 JUN 1997 10:00 am | 
|---|
| 2 | ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13,1995 | 
|---|
| 3 | ; | 
|---|
| 4 | EN ;Entry point to viewing the HL7 Monitor Event Log | 
|---|
| 5 | ; | 
|---|
| 6 | N IDX,SITE,PROFILE | 
|---|
| 7 | S PROFILE=$$PROFILE | 
|---|
| 8 | Q:'PROFILE | 
|---|
| 9 | I PROFILE S PROFILE=$$GET^HLEMP(PROFILE,.PROFILE) | 
|---|
| 10 | ; | 
|---|
| 11 | S IDX="^TMP(""HLEM"",$J,""EVENTS"")" | 
|---|
| 12 | D WAIT^DICD | 
|---|
| 13 | D EN^VALM("HLEM DISPLAY EVENTS") | 
|---|
| 14 | Q | 
|---|
| 15 | ; | 
|---|
| 16 | PROFILE() ;returns the profile to use in building the display. | 
|---|
| 17 | ;  1)First checks if there is a default profile, if so,returns it | 
|---|
| 18 | ;  2)If no default profile, but the user has exactly 1 profile, ruturs that | 
|---|
| 19 | ;  3) If multiple profiles, asks the user to select one. | 
|---|
| 20 | ;  4) If the user has no profile, he is asked to create one. | 
|---|
| 21 | ;Input:  DUZ must be defined | 
|---|
| 22 | ;Output: function returns profile's ien, or "" if not successful | 
|---|
| 23 | ; | 
|---|
| 24 | N PROFILE | 
|---|
| 25 | ;get the user's profile | 
|---|
| 26 | I '$G(DUZ) W !,"** Your DUZ is not defined, please report this to your IRM!" Q "" | 
|---|
| 27 | S PROFILE=$$FDEFAULT^HLEMP(DUZ) | 
|---|
| 28 | I 'PROFILE D | 
|---|
| 29 | .;there is no default profile, check for others | 
|---|
| 30 | .S PROFILE=$$SELECT^HLEMP1($G(DUZ),10) | 
|---|
| 31 | I 'PROFILE,$$ASKYESNO^HLEMU("You need a profile before viewing the HL7 Monitor Event Log,would you like to  create a new profile now","YES") D | 
|---|
| 32 | .N NAME,I | 
|---|
| 33 | .F I=1:1:20 I '$D(^HLEV(776.5,"C",DUZ,"NEW PROFILE"_I)) S NAME="NEW PROFILE"_I Q | 
|---|
| 34 | .S:$D(NAME) PROFILE=$$CREATE^HLEMP(DUZ,NAME) | 
|---|
| 35 | .I PROFILE,'$$EDIT^HLEMP(PROFILE) D | 
|---|
| 36 | ..I '$$DELETE^HLEMP(PROFILE) W !,"Incomplete profile couln't be deleted!" | 
|---|
| 37 | ..S PROFILE="" | 
|---|
| 38 | Q PROFILE | 
|---|
| 39 | ; | 
|---|
| 40 | HDR ;Header code | 
|---|
| 41 | S VALMHDR(1)="#    TYPE        DT/TM         APP             MSG      REVIEW         CNT" | 
|---|
| 42 | Q | 
|---|
| 43 | ; | 
|---|
| 44 | INIT ;Init variables and list array | 
|---|
| 45 | D BLD | 
|---|
| 46 | S VALMSG="USER PROFILE: "_PROFILE("NAME") | 
|---|
| 47 | D HDR | 
|---|
| 48 | S VALMBCK="R" | 
|---|
| 49 | Q | 
|---|
| 50 | ; | 
|---|
| 51 | BLD ;Build event log screen | 
|---|
| 52 | D CLEAN^VALM10 | 
|---|
| 53 | N SITE,TIME,TYPE,STATUS,COUNT | 
|---|
| 54 | K @IDX,VALMHDR | 
|---|
| 55 | S VALMBG=1,(COUNT,VALMCNT)=0 | 
|---|
| 56 | ; | 
|---|
| 57 | ;Build header | 
|---|
| 58 | D HDR | 
|---|
| 59 | ; | 
|---|
| 60 | ;Build list area | 
|---|
| 61 | ;what sites to include? Put in alphabetical order | 
|---|
| 62 | S SITE="" F  S SITE=$O(^HLEV(776.4,"D",SITE)) Q:'SITE  D | 
|---|
| 63 | .I 'PROFILE("ALL SITES"),'$D(PROFILE("SITES",SITE)) Q | 
|---|
| 64 | .N STATION | 
|---|
| 65 | .S STATION=$$STATION^HLEMSU(SITE) S:$L($P(STATION,"^")) SITE($P(STATION,"^"))=SITE | 
|---|
| 66 | ; | 
|---|
| 67 | S SITE="" | 
|---|
| 68 | F  S SITE=$O(SITE(SITE)) Q:'$L(SITE)  D | 
|---|
| 69 | .N FIRST | 
|---|
| 70 | .S FIRST=1 | 
|---|
| 71 | .S TYPE=0 | 
|---|
| 72 | .F  S TYPE=$O(^HLEV(776.4,"D",SITE(SITE),TYPE)) Q:'TYPE  D:(PROFILE("ALL TYPES"))!($D(PROFILE("TYPES",TYPE))) | 
|---|
| 73 | ..;maintain an index for the event type | 
|---|
| 74 | ..S @IDX@("SITE",SITE(SITE),"TYPE",TYPE)=VALMCNT | 
|---|
| 75 | ..S TIME=PROFILE("START") | 
|---|
| 76 | ..F  S TIME=$O(^HLEV(776.4,"D",SITE(SITE),TYPE,TIME)) Q:'TIME  D | 
|---|
| 77 | ...S STATUS="" | 
|---|
| 78 | ...S STATUS=$O(^HLEV(776.4,"D",SITE(SITE),TYPE,TIME,STATUS)) Q:'$L(STATUS)  D | 
|---|
| 79 | ....N EVENTIEN | 
|---|
| 80 | ....S EVENTIEN=0 | 
|---|
| 81 | ....F  S EVENTIEN=$O(^HLEV(776.4,"D",SITE(SITE),TYPE,TIME,STATUS,EVENTIEN)) Q:'EVENTIEN  D | 
|---|
| 82 | .....N EVENT | 
|---|
| 83 | .....Q:'$$GET^HLEME(EVENTIEN,.EVENT) | 
|---|
| 84 | .....I PROFILE("URGENT"),'EVENT("URGENT") Q | 
|---|
| 85 | .....I 'PROFILE("ALL APPS") Q:'$L(EVENT("APPLICATION"))  Q:'$D(PROFILE(EVENT("APPLICATION"))) | 
|---|
| 86 | .....; | 
|---|
| 87 | .....;if this is the first event for this site,display a header | 
|---|
| 88 | .....I FIRST D  S FIRST=0 | 
|---|
| 89 | ......;S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$CENTER^HLEMSU("SITE: "_SITE_"   STATION #: "_$P($$STATION^HLEMSU(SITE(SITE)),"^",2)),1,"RUH") | 
|---|
| 90 | ......I $$SET^HLEMSU(VALMCNT,$$LJ^XLFSTR($E($G(@IDX@(VALMCNT,0)),4,80),77),4,"U") | 
|---|
| 91 | ......S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),SITE_"   STATION #: "_$P($$STATION^HLEMSU(SITE(SITE)),"^",2),1,"H") | 
|---|
| 92 | ......;also, maintain an index for searching | 
|---|
| 93 | ......S @IDX@("SITE",SITE(SITE))=VALMCNT | 
|---|
| 94 | ......S @IDX@("SITE",SITE)=VALMCNT | 
|---|
| 95 | .....; | 
|---|
| 96 | .....;display the event | 
|---|
| 97 | .....D DISPLAY(.EVENT,.VALMCNT,.COUNT) | 
|---|
| 98 | Q | 
|---|
| 99 | ; | 
|---|
| 100 | DISPLAY(EVENT,VALMCNT,COUNT) ; | 
|---|
| 101 | ;Adds one line for an event to the list, increments the counts of lines and events, and maintains the search index for events on the list | 
|---|
| 102 | ; | 
|---|
| 103 | N CODE,TIME | 
|---|
| 104 | S @IDX@("EVENT",$$INC^HLEMU(.COUNT))=EVENT("IEN") | 
|---|
| 105 | S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),COUNT,1,"R") | 
|---|
| 106 | S VALMCNT=$$SET^HLEMSU(VALMCNT,$$CODE^HLEMT(EVENT("TYPE")),6) | 
|---|
| 107 | S VALMCNT=$$SET^HLEMSU(VALMCNT,$$FMTE^XLFDT($E(EVENT("DT/TM"),1,12),2),17) | 
|---|
| 108 | S VALMCNT=$$SET^HLEMSU(VALMCNT,$E(EVENT("APPLICATION"),1,15),32) | 
|---|
| 109 | I $L(EVENT("MSG TYPE")) S VALMCNT=$$SET^HLEMSU(VALMCNT,EVENT("MSG TYPE")_"~"_EVENT("MSG EVENT"),48) | 
|---|
| 110 | S VALMCNT=$$SET^HLEMSU(VALMCNT,$E($$EXTERNAL^DILFD(776.4,.06,"F",EVENT("REVIEW STATUS")),1,15),57) | 
|---|
| 111 | I EVENT("COUNT")>1 S VALNCNT=$$SET^HLEMSU(VALMCNT,EVENT("COUNT"),72) | 
|---|
| 112 | I EVENT("URGENT") S VALMCNT=$$SET^HLEMSU(VALMCNT,"*",79,"BRH") | 
|---|
| 113 | Q | 
|---|
| 114 | ; | 
|---|
| 115 | HELP ;Help code | 
|---|
| 116 | S X="?" D DISP^XQORM1 W !! | 
|---|
| 117 | Q | 
|---|
| 118 | ; | 
|---|
| 119 | EXIT ;Exit code | 
|---|
| 120 | D CLEAN^VALM10 | 
|---|
| 121 | D CLEAR^VALM1 | 
|---|
| 122 | K @IDX | 
|---|
| 123 | Q | 
|---|
| 124 | ; | 
|---|
| 125 | EXPND ;Expand code | 
|---|
| 126 | Q | 
|---|