| 1 | HLEMP ;ALB/CJM-HL7 - APIs for Monitor Events Log Profiles  ;07/10/2003 | 
|---|
| 2 | ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13,1995 | 
|---|
| 3 | ; | 
|---|
| 4 | FDEFAULT(DUZ) ; | 
|---|
| 5 | ;Description: Given a DUZ, returns the default profile, or "" on failure | 
|---|
| 6 | ; | 
|---|
| 7 | Q:'$G(DUZ) 0 | 
|---|
| 8 | Q $O(^HLEV(776.5,"AC",DUZ,0)) | 
|---|
| 9 | ; | 
|---|
| 10 | Q $S(Y=-1:0,1:+Y) | 
|---|
| 11 | ; | 
|---|
| 12 | GET(IEN,PROFILE) ; | 
|---|
| 13 | ;Description - given the ien, it returns an array containing the profile | 
|---|
| 14 | ;Input: | 
|---|
| 15 | ;  IEN - ien of the profile | 
|---|
| 16 | ;Output: | 
|---|
| 17 | ;  function returns 0 on failure, 1 on success | 
|---|
| 18 | ;  PROFILE(   **pass by reference** | 
|---|
| 19 | ;  "ALL APPS" - 1 if all sending applications should be included, 0 otherwise | 
|---|
| 20 | ;  "ALL SITES" - 1 if all sites should be included, 0 otherwise | 
|---|
| 21 | ;  "ALL STATUSES" 1 if all review statuses should be included, 0 otherwise | 
|---|
| 22 | ;  "ALL TYPES" - 1 if all event types should be included, 0 otherwise | 
|---|
| 23 | ;  "APPS",<HL7 APPLICATION PARAMETER>) -list of sending applications to include - NOT the iens, but the names of the HL7 Application Parameter | 
|---|
| 24 | ;  "DUZ" - the duz of the profile's owner | 
|---|
| 25 | ;  "DEFAULT" - 1 if this is the default profile, 0 if it isn't | 
|---|
| 26 | ;  "IEN" - ien of the profile | 
|---|
| 27 | ;  "NAME" - name of the profile | 
|---|
| 28 | ;  "SITES",<institution ien>) - list of institution numbers to include | 
|---|
| 29 | ;  "START" - starting date/time for selecting events for display, in FM format | 
|---|
| 30 | ;  "STATUSES",<review status code>) - list of review status codes to include | 
|---|
| 31 | ;  "TYPES",<HL7 MONITOR EVENT TYPE>) - list of event type iens | 
|---|
| 32 | ;  "URGENT" - 1 means urgent only, 0 means disregard urgency | 
|---|
| 33 | ; | 
|---|
| 34 | ; | 
|---|
| 35 | Q:'$G(IEN) 0 | 
|---|
| 36 | N NODE,SITE,TYPE,APP,STATUS,APPNAME,I | 
|---|
| 37 | K PROFILE S PROFILE=IEN | 
|---|
| 38 | S NODE=$G(^HLEV(776.5,IEN,0)) | 
|---|
| 39 | Q:'$L(NODE) 0 | 
|---|
| 40 | S PROFILE("IEN")=IEN | 
|---|
| 41 | S PROFILE("DUZ")=+NODE | 
|---|
| 42 | S PROFILE("NAME")=$P(NODE,"^",2) | 
|---|
| 43 | S PROFILE("DEFAULT")=$P(NODE,"^",3) | 
|---|
| 44 | S PROFILE("ALL SITES")=$P(NODE,"^",4) | 
|---|
| 45 | S PROFILE("ALL TYPES")=$P(NODE,"^",5) | 
|---|
| 46 | S PROFILE("ALL APPS")=$P(NODE,"^",6) | 
|---|
| 47 | S PROFILE("ALL STATUSES")=$P(NODE,"^",7) | 
|---|
| 48 | S START=+$P(NODE,"^",8) D | 
|---|
| 49 | .N NOW | 
|---|
| 50 | .S NOW=$$NOW^XLFDT | 
|---|
| 51 | .S PROFILE("START")=0 | 
|---|
| 52 | .I START=1 S PROFILE("START")=$$FMADD^XLFDT(NOW,,-1) Q | 
|---|
| 53 | .I START=2 S PROFILE("START")=$$FMADD^XLFDT(NOW,,-2) Q | 
|---|
| 54 | .I START=3 S PROFILE("START")=$$FMADD^XLFDT(NOW,,-6) Q | 
|---|
| 55 | .I START=4 S PROFILE("START")=+NOW Q | 
|---|
| 56 | .I START=5 S PROFILE("START")=$$FMADD^XLFDT(NOW,-1) Q | 
|---|
| 57 | .I START=6 S PROFILE("START")=$$FMADD^XLFDT(+NOW,-1) Q | 
|---|
| 58 | .I START=7 S PROFILE("START")=$$FMADD^XLFDT(NOW,-2) Q | 
|---|
| 59 | .I START=8 S PROFILE("START")=$$FMADD^XLFDT(NOW,-3) Q | 
|---|
| 60 | .I START=9 S PROFILE("START")=$$FMADD^XLFDT(NOW,-7) Q | 
|---|
| 61 | S PROFILE("URGENT")=$P(NODE,"^",9) | 
|---|
| 62 | S SITE=0 | 
|---|
| 63 | F I="APPS","SITES","TYPES","STATUSES" S PROFILE(I)="" | 
|---|
| 64 | F  S SITE=$O(^HLEV(776.5,IEN,1,SITE)) Q:'SITE  S PROFILE("SITES",+$G(^HLEV(776.5,IEN,1,SITE,0)))="" | 
|---|
| 65 | S TYPE=0 | 
|---|
| 66 | F  S TYPE=$O(^HLEV(776.5,IEN,2,TYPE)) Q:'TYPE  S PROFILE("TYPES",+$G(^HLEV(776.5,IEN,2,TYPE,0)))="" | 
|---|
| 67 | S APP=0 | 
|---|
| 68 | F  S APP=$O(^HLEV(776.5,IEN,3,APP)) Q:'APP  S PROFILE("APPS",$$APPNAME^HLEMU(+$G(^HLEV(776.5,IEN,3,APP,0))))="" | 
|---|
| 69 | S STATUS=0 | 
|---|
| 70 | F  S STATUS=$O(^HLEV(776.5,IEN,4,STATUS)) Q:'STATUS  S APPNAME=$$APPNAME^HLEMU(+$G(^HLEV(776.5,IEN,4,STATUS,0))) I $L(APPNAME) S PROFILE("APPS",APPNAME)="" | 
|---|
| 71 | Q 1 | 
|---|
| 72 | ; | 
|---|
| 73 | CREATE(DUZ,NAME,ERROR) ; | 
|---|
| 74 | ;Given the DUZ and a name, creates a new profile of that name. | 
|---|
| 75 | ;Output- | 
|---|
| 76 | ;  function value - returns the new profile ien on success, 0 on failure | 
|---|
| 77 | ;  ERROR **optional, pass by reference** an array of errors | 
|---|
| 78 | ; | 
|---|
| 79 | Q:'$G(DUZ) 0 | 
|---|
| 80 | Q:'$L(NAME) 0 | 
|---|
| 81 | ; | 
|---|
| 82 | N DATA | 
|---|
| 83 | S DATA(.01)=DUZ | 
|---|
| 84 | S DATA(.02)=NAME | 
|---|
| 85 | Q $$ADD^HLEMU(776.5,,.DATA,.ERROR) | 
|---|
| 86 | ; | 
|---|
| 87 | EDIT(PROFILE) ; | 
|---|
| 88 | ;Given the ien of a profile, allows a user to edit it. | 
|---|
| 89 | ;Input:  PROFILE - ien of a profile | 
|---|
| 90 | ;Output:  function returns 1 on success, 0 on failure, or on indication that the user did not complete the edit | 
|---|
| 91 | ; | 
|---|
| 92 | Q:'$G(PROFILE) 0 | 
|---|
| 93 | Q:'$G(^HLEV(776.5,PROFILE,0)) 0 | 
|---|
| 94 | K DA,DIE,DR | 
|---|
| 95 | S DA=PROFILE | 
|---|
| 96 | S DIE=776.5 | 
|---|
| 97 | S DR=".02:.09" | 
|---|
| 98 | S DIE("NO^")="OUTOK" | 
|---|
| 99 | D ^DIE | 
|---|
| 100 | I '$D(Y),'$D(DTOUT),$$GET(PROFILE,.PROFILE) D | 
|---|
| 101 | .S DR="" | 
|---|
| 102 | .S DIE("NO^")="OUTOK" | 
|---|
| 103 | .I 'PROFILE("ALL SITES") S DR="1;" | 
|---|
| 104 | .I 'PROFILE("ALL TYPES") S DR=DR_"2;" | 
|---|
| 105 | .I 'PROFILE("ALL APPS") S DR=DR_"3;" | 
|---|
| 106 | .I 'PROFILE("ALL STATUSES") S DR=DR_4 | 
|---|
| 107 | .D ^DIE | 
|---|
| 108 | Q $S($D(Y)!$D(DTOUT):0,1:1) | 
|---|
| 109 | ; | 
|---|
| 110 | DELETE(PROFILE) ; | 
|---|
| 111 | ;Given the ien, deletes the profile | 
|---|
| 112 | Q $$DELETE^HLEMU(776.5,.PROFILE) | 
|---|