[613] | 1 | VAFHCA08 ;ALB/CM OUTPATIENT A08 GENERATOR ;4/5/95
|
---|
| 2 | ;;5.3;Registration;**91**;Jun 06, 1996
|
---|
| 3 | ;
|
---|
| 4 | ;This function will generator an A08 HL7 message for an outpatient
|
---|
| 5 | ;event. If the generation is successful, 0 will be returned.
|
---|
| 6 | ;If for any reason is not successful, -1 and error message will be
|
---|
| 7 | ;returned.
|
---|
| 8 | ;
|
---|
| 9 | ;Two entry points have been provided. The first is for use by the
|
---|
| 10 | ;Update event outside of an outpatient event. The second is for use
|
---|
| 11 | ;by the outpatient event. The second will return 0^COUNT, where COUNT
|
---|
| 12 | ;is the last value entered.
|
---|
| 13 | ;
|
---|
| 14 | UP(DFN,EVENT,NODE,COUNT,GBL,PISTR,ZSTR,PSTR,XSTR,PDNUM,ZNUM,PNUM,XNUM) ;
|
---|
| 15 | ;
|
---|
| 16 | ;DFN - Patient file DFN
|
---|
| 17 | ;EVENT - Event number from pivot file
|
---|
| 18 | ;NODE - Zero Node of pivot file entry
|
---|
| 19 | ;COUNT - Subscript to start global/array storage at
|
---|
| 20 | ;GBL - global or array to store segments
|
---|
| 21 | ;PISTR - fields to be included in PID (null - required fields,
|
---|
| 22 | ;or string of fields seperated by commas)
|
---|
| 23 | ;ZSTR - fields to be included in ZPD (null - required fields,
|
---|
| 24 | ;or string of fields seperated by commas)
|
---|
| 25 | ;PSTR - fields to be included in OPV1
|
---|
| 26 | ;(if null - required fields, if "A" - supported
|
---|
| 27 | ;fields, or string of fields seperated by commas")
|
---|
| 28 | ;XSTR - fields to be included in ODG1
|
---|
| 29 | ;(if null - required fields, if "A" - supported
|
---|
| 30 | ;fields, or string of fields seperated by commas")
|
---|
| 31 | ;PDNUM - ID # for PID (optional)
|
---|
| 32 | ;ZNUM - ID # for ZPD (optional)
|
---|
| 33 | ;PNUM - ID # for OPV1 (optional)
|
---|
| 34 | ;XNUM - ID # for ODG1 (optional)
|
---|
| 35 | ;
|
---|
| 36 | ;Be sure to have HLENTRY defined before making this call.
|
---|
| 37 | ; HL("SAN") v1.6 from init^hlfn2
|
---|
| 38 | ;It should be equal to the HL7 NON-DHCP APPLICATION PARAMETER name
|
---|
| 39 | ;This is only necessary if passing "A" for the fields.
|
---|
| 40 | ;
|
---|
| 41 | ;As well as all variables defined in INIT^HLFNC2
|
---|
| 42 | ;
|
---|
| 43 | I '$D(DFN)!'$D(EVENT)!'$D(NODE)!'$D(GBL) Q "-1^MISSING PARAMETERS"
|
---|
| 44 | I $D(HL)=1 Q "-1^"_HL ; this to insure init^hlfnc2 called
|
---|
| 45 | I '$D(HL) Q "-1^ No HL Array"
|
---|
| 46 | D SET
|
---|
| 47 | S UPFLG="",EVDT=$P(NODE,"^"),VPTR=$P(NODE,"^",5)
|
---|
| 48 | I '$D(COUNT)!(+COUNT<1) S COUNT=1
|
---|
| 49 | ;S @GBL@(COUNT)=$$MSH^HLFNC1("ADT"_$E(HL("ECH"))_"A08"),COUNT=COUNT+1
|
---|
| 50 | S FLG="05" ;event is new flag
|
---|
| 51 | G EN
|
---|
| 52 | ;
|
---|
| 53 | OA08(DFN,EVENT,EVDT,VPTR,PISTR,ZSTR,PSTR,XSTR,PDNUM,ZNUM,PNUM,XNUM) ;
|
---|
| 54 | ;
|
---|
| 55 | ;DFN - Patient file DFN
|
---|
| 56 | ;EVENT - Event number from pivot file
|
---|
| 57 | ;EVDT - event date/time FileMan format
|
---|
| 58 | ;VPTR - variable pointer
|
---|
| 59 | ;PISTR - fields to be included in PID (null - required fields,
|
---|
| 60 | ;or string of fields seperated by commas)
|
---|
| 61 | ;ZSTR - fields to be included in ZPD (null - required fields,
|
---|
| 62 | ;or string of fields seperated by commas)
|
---|
| 63 | ;PSTR - fields to be included in OPV1
|
---|
| 64 | ;(if null - required fields, if "A" - supported
|
---|
| 65 | ;fields, or string of fields seperated by commas")
|
---|
| 66 | ;XSTR - fields to be included in ODG1
|
---|
| 67 | ;(if null - required fields, if "A" - supported
|
---|
| 68 | ;fields, or string of fields seperated by commas")
|
---|
| 69 | ;PDNUM - ID # for PID (optional)
|
---|
| 70 | ;ZNUM - ID # for ZPD (optional)
|
---|
| 71 | ;PNUM - ID # for OPV1 (optional)
|
---|
| 72 | ;XNUM - ID # for ODG1 (optional)
|
---|
| 73 | ;
|
---|
| 74 | ;
|
---|
| 75 | I '$D(DFN)&('$D(EVENT))&('$D(EVDT))!('$D(VPTR)) Q "-1^Missing Parameters, Unable to generate A08 Message"
|
---|
| 76 | I '$D(DFN) Q "-1^No patient selected, Unable to generate A08 Message"
|
---|
| 77 | I DFN="" Q "-1^No patient selected, Unable to generate A08 Message"
|
---|
| 78 | I $D(EVENT) I EVENT'="" S NODE=$$PIVX^VAFHPIVT(EVENT,DFN,EVDT)
|
---|
| 79 | I $D(EVENT) I EVENT="" K EVENT
|
---|
| 80 | D SET
|
---|
| 81 | I '$D(EVENT) S NODE=$$PIVNW^VAFHPIVT(DFN,EVDT,2,VPTR),EVENT=$P(NODE,":")
|
---|
| 82 | I EVENT<1 Q "-1^Bad Event Number, Unable to generate A08 Message"
|
---|
| 83 | S NODE=$P(NODE,":",2)
|
---|
| 84 | ; hlsdata should not be defined in 1.6 so this should always use hla()
|
---|
| 85 | S GBL=$G(HLSDATA) I GBL']"" S GBL="HLA(""HLS"")"
|
---|
| 86 | S COUNT=1
|
---|
| 87 | S (HLENTRY,HLNDAP)="PIMS HL7" DO I $D(HL)=1 G EXIT
|
---|
| 88 | . K HL D INIT^HLFNC2("VAFH A08",.HL) ; ; only for oa08 entry
|
---|
| 89 | ;call to determine old or new
|
---|
| 90 | S FLG="05" ;NEW
|
---|
| 91 | N LAST
|
---|
| 92 | S LAST=$$LTD^VAFHUTL(DFN)
|
---|
| 93 | I $P(LAST,"^")>EVDT S FLG="04" ;OLD
|
---|
| 94 | ;
|
---|
| 95 | EN ;
|
---|
| 96 | S EVN=$$EVN^VAFHLEVN("A08",FLG)
|
---|
| 97 | I +EVN=-1 S HLERR="-1^UNABLE TO GENERATE EVN SEGMENT" G EXIT
|
---|
| 98 | S PID=$$EN^VAFHLPID(DFN,PISTR)
|
---|
| 99 | S ZPD=$$EN^VAFHLZPD(DFN,ZSTR)
|
---|
| 100 | I $G(^DPT(DFN,.1))]"",$D(UPFLG) DO ; if inpatient get inpat pv1
|
---|
| 101 | . S OPV1=$$EN^VAFHAPV1(DFN,$$NOW^XLFDT(),",2,3,7,8,10,19,44,45",,EVENT)
|
---|
| 102 | E S OPV1=$$OUT^VAFHLPV1(DFN,EVENT,EVDT,VPTR,PSTR,PNUM)
|
---|
| 103 | ;
|
---|
| 104 | I +OPV1=-1 S HLERR="-1^UNABLE TO GENERATE PV1 SEGMENT" G EXIT
|
---|
| 105 | I $D(XSTR) S ODG1=$$OUT^VAFHLDG1(DFN,EVENT,EVDT,VPTR,XSTR,XNUM)
|
---|
| 106 | S @GBL@(COUNT)=EVN,COUNT=COUNT+1
|
---|
| 107 | S @GBL@(COUNT)=PID M @GBL@(COUNT)=VAPID S COUNT=COUNT+1
|
---|
| 108 | S @GBL@(COUNT)=ZPD,COUNT=COUNT+1
|
---|
| 109 | ; CHANGE BECAUSE PHILLY WANTS "T"
|
---|
| 110 | I $P(OPV1,HLFS,3)="" S $P(OPV1,HLFS,3)="T"
|
---|
| 111 | S @GBL@(COUNT)=OPV1
|
---|
| 112 | I $D(XSTR) I +ODG1'=-1 S COUNT=COUNT+1,@GBL@(COUNT)=ODG1
|
---|
| 113 | I '$D(UPFLG) S HLMTN="ADT" DO ; upflag set on EN entry only
|
---|
| 114 | . I GBL["^TMP(" DO Q
|
---|
| 115 | . . D GENERATE^HLMA("VAFH A08","GM",1,.HLRSLT)
|
---|
| 116 | . . K ^TMP("HLS",$J)
|
---|
| 117 | . I GBL["HLA(" DO Q
|
---|
| 118 | . . D GENERATE^HLMA("VAFH A08","LM",1,.HLRSLT)
|
---|
| 119 | . . K HLA
|
---|
| 120 | EXIT ;
|
---|
| 121 | N TERR ; upflg is set from up entry, HL check is at top
|
---|
| 122 | I $D(UPFLG) K UPFLG,EVN,PID,ZPD,OPV1,ODG1 Q "0^"_COUNT
|
---|
| 123 | ;I $D(HLERR)!$D(HL)=1 S TERR=$G(HLERR)
|
---|
| 124 | I $D(HL)=1 S TERR="-1^"_HL
|
---|
| 125 | I '$D(HLERR),$D(HL)>1 S TERR=0
|
---|
| 126 | I '$D(TERR) S TERR=0 ;just in case
|
---|
| 127 | K VAPID,HLRSLT,NODE,EVN,PID,ZPD,OPV1,ODG1,COUNT,FLG,CNT,ERR,EGBL
|
---|
| 128 | K HLSDATA,HLEVN,HLMTN,HLENTRY,HLERR,HLNDAP,EFLAG
|
---|
| 129 | D KILL^HLTRANS
|
---|
| 130 | Q TERR
|
---|
| 131 | ;
|
---|
| 132 | SET ;
|
---|
| 133 | I '$D(PNUM) S PNUM=1
|
---|
| 134 | I '$D(PDNUM) S PDNUM=1
|
---|
| 135 | I '$D(ZNUM) S ZNUM=1
|
---|
| 136 | I '$D(XNUM) S XNUM=1
|
---|
| 137 | Q
|
---|