| 1 | SCMCHLL ;BP/DJB - PCMM HL7 Log Transmission ; 3/2/00 12:59pm
 | 
|---|
| 2 |  ;;5.3;Scheduling;**210,272**;AUG 13, 1993
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | LOG ;Record HL7 messages in PCMM HL7 TRANSMISSION LOG file.
 | 
|---|
| 5 |  ;Parse the HL7 array and build an array in ^TMP("PCMM","LOG",$J) and
 | 
|---|
| 6 |  ;use to record transmissions.
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  NEW FS,MSGID,TDATE
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ;Initialize variables
 | 
|---|
| 11 |  KILL ^TMP("PCMM","LOG",$J)
 | 
|---|
| 12 |  S FS=HL("FS") ;........................Field separator
 | 
|---|
| 13 |  S MSGID=$P(HLRESLT,"^",1) Q:'MSGID  ;..Message ID
 | 
|---|
| 14 |  S TDATE=$$NOW^XLFDT ;..................Transmission date
 | 
|---|
| 15 |  S ^TMP("PCMM","LOG",$J,"MSGID")=MSGID
 | 
|---|
| 16 |  S ^TMP("PCMM","LOG",$J,"DT")=TDATE
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  D GETDATA ;..Get data from HL7 message array
 | 
|---|
| 19 |  D ADD ;......Create entry in Transmission Log and stuff data
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  KILL ^TMP("PCMM","LOG",$J)
 | 
|---|
| 22 |  Q
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 | GETDATA ;Go thru HL7 array and build array of data in ^TMP("PCMM","LOG",$J).
 | 
|---|
| 25 |  NEW CNT,DATA,DFN,SEG,SEQ,ZPCID
 | 
|---|
| 26 |  S CNT=""
 | 
|---|
| 27 |  F  S CNT=$O(^TMP("HLS",$J,CNT)) Q:'CNT  D  ;
 | 
|---|
| 28 |  . S DATA=$G(^(CNT)) Q:DATA=""
 | 
|---|
| 29 |  . S SEG=$P(DATA,FS,1)
 | 
|---|
| 30 |  . ;
 | 
|---|
| 31 |  . ;PID segment - Get patient DFN
 | 
|---|
| 32 |  . I SEG="PID" D  Q
 | 
|---|
| 33 |  . . S DFN=+$P(DATA,U,4)
 | 
|---|
| 34 |  . . S ^TMP("PCMM","LOG",$J,"DFN")=DFN
 | 
|---|
| 35 |  . ;
 | 
|---|
| 36 |  . ;ZPC segment - Get sequence # and ZPC ID.
 | 
|---|
| 37 |  . I SEG="ZPC" D  Q
 | 
|---|
| 38 |  . . S SEQ=$P(DATA,U,8)
 | 
|---|
| 39 |  . . S ZPCID=$P(DATA,U,2)
 | 
|---|
| 40 |  . . S ^TMP("PCMM","LOG",$J,"ZPC",SEQ)=ZPCID
 | 
|---|
| 41 |  Q
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 | ADD ;Process data array built in GETDATA
 | 
|---|
| 44 |  NEW TRANI
 | 
|---|
| 45 |  S TRANI=$$CREATE(^TMP("PCMM","LOG",$J,"MSGID")) ;..Create new entry
 | 
|---|
| 46 |  Q:+TRANI<0
 | 
|---|
| 47 |  D STORE(TRANI) ;..Store transmission info
 | 
|---|
| 48 |  Q
 | 
|---|
| 49 |  ;
 | 
|---|
| 50 | CREATE(MSGID) ;Create new entry
 | 
|---|
| 51 |  ; Input: Message Control ID
 | 
|---|
| 52 |  ;Output: Pointer to entry in PCMM HL7 TRANSMISSION LOG (#404.471)
 | 
|---|
| 53 |  ;        -1^Error - Unable to create entry
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  NEW SCERR,SCFDA,SCIEN
 | 
|---|
| 56 |  S SCFDA(404.471,"+1,",.01)=MSGID
 | 
|---|
| 57 |  D UPDATE^DIE("E","SCFDA","SCIEN","SCERR")
 | 
|---|
| 58 |  I $D(SCERR) Q "-1^Unable to create entry in file #404.471"
 | 
|---|
| 59 |  Q SCIEN(1)
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 | STORE(TRANI) ;Store data
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  ; Input: TRANI - Pointer PCMM HL7 TRANSMISSION LOG file (#404.471)
 | 
|---|
| 64 |  ;Output: None
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 |  NEW CNT,SCERR,SCIEN,SCIENS,SCIENS1,SCFDA,SEQ,ZPCID
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  ;Check input
 | 
|---|
| 69 |  Q:'+$G(TRANI)
 | 
|---|
| 70 |  Q:'$D(^SCPT(404.471,TRANI))
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 |  S SCIENS=TRANI_","
 | 
|---|
| 73 |  S SCFDA(404.471,SCIENS,.02)=$G(^TMP("PCMM","LOG",$J,"DFN")) ;Patient
 | 
|---|
| 74 |  S SCFDA(404.471,SCIENS,.03)=$G(^TMP("PCMM","LOG",$J,"DT")) ;.Date
 | 
|---|
| 75 |  S SCFDA(404.471,SCIENS,.04)="T" ;........................Status
 | 
|---|
| 76 |  I $G(WORK),'SCFDA(404.471,SCIENS,.02) D
 | 
|---|
| 77 |  .S SCFDA(404.471,SCIENS,.07)=$G(VARPTR)
 | 
|---|
| 78 |  .I $G(VARPTR)[404.52 S SCFDA(404.471,SCIENS,.08)=$P($G(^SCTM(404.52,+VARPTR,0)),U,3)
 | 
|---|
| 79 |  D FILE^DIE("I","SCFDA","SCERR")
 | 
|---|
| 80 |  KILL SCFDA,SCERR
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 |  ;Fill in ZPC multiple
 | 
|---|
| 83 |  S (CNT,SEQ)=0
 | 
|---|
| 84 |  F  S SEQ=$O(^TMP("PCMM","LOG",$J,"ZPC",SEQ))  Q:'SEQ  D  ;
 | 
|---|
| 85 |  . S ZPCID=$$CONVERT^SCMCHLRI($G(^(SEQ)))
 | 
|---|
| 86 |  . S CNT=CNT+1
 | 
|---|
| 87 |  . S SCIENS1="+"_CNT_","_SCIENS
 | 
|---|
| 88 |  . S SCFDA(404.47141,SCIENS1,.01)=SEQ
 | 
|---|
| 89 |  . S SCFDA(404.47141,SCIENS1,.02)=ZPCID
 | 
|---|
| 90 |  . D UPDATE^DIE("","SCFDA","SCIEN","SCERR")
 | 
|---|
| 91 |  . ;I $D(SCERR) ZW SCERR
 | 
|---|
| 92 |  Q
 | 
|---|