| [623] | 1 | PSOHLDS4 ;BIR/PWC-Build HL7 Segments for Automated Interface ;11/13/06 1:13pm | 
|---|
|  | 2 | ;;7.0;OUTPATIENT PHARMACY;**156,255**;DEC 1997;Build 9 | 
|---|
|  | 3 | ;HLFNC       supp. by DBIA 10106 | 
|---|
|  | 4 | ;DIC(5       supp. by DBIA 10056 | 
|---|
|  | 5 | ;EN^PSNPPIO  supp. by DBIA 3794 | 
|---|
|  | 6 | ;This routine is called from PSOHLDS1 | 
|---|
|  | 7 | ; | 
|---|
|  | 8 | ;*255 moved tag NTEPMI from PSOHLDS2 | 
|---|
|  | 9 | Q | 
|---|
|  | 10 | IAM(PSI) ;allergy list segment | 
|---|
|  | 11 | Q:'$D(DFN)!$D(PAS3) | 
|---|
|  | 12 | N IAM,IDX,SEV,SEV1,DAT,X,TYP,TYP1,VER,VER1 | 
|---|
|  | 13 | S IAM="",CNT=0,GMRA="0^0^111" D EN1^GMRADPT | 
|---|
|  | 14 | I $G(GMRAL)="" G ZALQT | 
|---|
|  | 15 | F AIEN=0:0 S AIEN=$O(GMRAL(AIEN)) Q:'AIEN  D | 
|---|
|  | 16 | .K ADTL D EN1^GMRAOR2(AIEN,"ADTL") S CNT=CNT+1 | 
|---|
|  | 17 | .S TYP1=$P(GMRAL(AIEN),"^",7) | 
|---|
|  | 18 | .S TYP=$S(TYP1="D":"DRUG",TYP1="F":"FOOD",TYP1="O":"OTHER",TYP1="DF":"DRUG/FOOD",TYP1="DO":"DRUG/OTHER",TYP1="DFO":"DRUG/FOOD/OTHER",1:"""""") | 
|---|
|  | 19 | .S VER=$S($P(GMRAL(AIEN),"^",4)=1:"VERIFIED",1:"NON-VERIFIED") | 
|---|
|  | 20 | .S VER1=$S($P(GMRAL(AIEN),"^",4)=1:"C",1:"U")  ;confirmed or unconfirmed | 
|---|
|  | 21 | .S $P(IAM,"|",2)=TYP1_CS_TYP_CS_"LGMR120.8" | 
|---|
|  | 22 | .S $P(IAM,"|",3)=AIEN_CS_$P(GMRAL(AIEN),"^",2)_CS_"LGMR120.8" | 
|---|
|  | 23 | .S IDX=$O(ADTL("O","")),X="" S:IDX'="" X=$G(ADTL("O",IDX)) | 
|---|
|  | 24 | .S DAT=$P(X,"^"),DAT=$S(DAT'="":$$HLDATE^HLFNC(DAT,"DT"),1:"") | 
|---|
|  | 25 | .S SEV=$P(X,"^",2) S:SEV="" SEV="""""",DAT="" | 
|---|
|  | 26 | .S SEV1=$S(SEV="MILD":"MI",SEV="MODERATE":"MO",SEV="SEVERE":"SV",1:"U") | 
|---|
|  | 27 | .S $P(IAM,"|",4)=SEV1 | 
|---|
|  | 28 | .S $P(IAM,"|",5)=$P($P(GMRAL(AIEN),"^",8),";") | 
|---|
|  | 29 | .S $P(IAM,"|",13)=DAT | 
|---|
|  | 30 | .S $P(IAM,"|",17)=VER1 | 
|---|
|  | 31 | .S ^TMP("PSO",$J,PSI)="IAM|"_IAM,PSI=PSI+1 | 
|---|
|  | 32 | .F  S IDX=$O(ADTL("O",IDX)) Q:IDX=""  D   ;repeat for all reactions | 
|---|
|  | 33 | ..S X=$G(ADTL("O",IDX)),DAT=$P(X,"^"),SEV=$P(X,"^",2) I SEV="" Q | 
|---|
|  | 34 | ..S DAT=$S(DAT'="":$$HLDATE^HLFNC(DAT,"DT"),1:"") | 
|---|
|  | 35 | ..S $P(IAM,FS,4)=SEV,$P(IAM,FS,13)=DAT | 
|---|
|  | 36 | ..S ^TMP("PSO",$J,PSI)="IAM|"_IAM,PSI=PSI+1 | 
|---|
|  | 37 | S PAS3=1 | 
|---|
|  | 38 | ; | 
|---|
|  | 39 | ZALQT K GMRAL,ADTL,AIEN,CNT,CNT,GMRA,TYP,TYP1,SEV,SEV1,VER,VER1 | 
|---|
|  | 40 | Q | 
|---|
|  | 41 | ; | 
|---|
|  | 42 | ORC(PSI) ;common order segment | 
|---|
|  | 43 | Q:'$D(DFN) | 
|---|
|  | 44 | N ORC S ORC="" | 
|---|
|  | 45 | S $P(ORC,"|",1)="NW" | 
|---|
|  | 46 | S $P(ORC,"|",2)=IRXN_CS_"OP7.0" | 
|---|
|  | 47 | S $P(ORC,"|",9)=ISDT | 
|---|
|  | 48 | S $P(ORC,"|",10)=EBY_CS_EBY1 | 
|---|
|  | 49 | S $P(ORC,"|",12)=PVDR_CS_PVDR1 | 
|---|
|  | 50 | S $P(ORC,"|",13)=$G(PSOLAP) | 
|---|
|  | 51 | S $P(ORC,"|",15)=EFDT | 
|---|
|  | 52 | S $P(ORC,"|",16)=$S($G(RXPR(IRXN)):"PARTIAL",$G(RXFL(IRXN)):"REFILL",$G(RXRP(IRXN)):"REPRINT",1:"NEW") | 
|---|
|  | 53 | S $P(ORC,"|",17)=CLN_CS_CLN1_CS_"99PSC" | 
|---|
|  | 54 | S $P(ORC,"|",19)=$S(CSINER'="":CSINER_CS_CSINER1,1:"") | 
|---|
|  | 55 | S $P(ORC,"|",21)=$P(SITE,"^",1)_CS_CS_$P(SITE,"^",6) | 
|---|
|  | 56 | S PSZIP=$P(SITE,"^",5),PSOHZIP=$S(PSZIP["-":PSZIP,1:$E(PSZIP,1,5)_$S($E(PSZIP,6,9)]"":"-"_$E(PSZIP,6,9),1:"")) | 
|---|
|  | 57 | S $P(ORC,"|",22)=$P(SITE,"^",2)_CS_CS_$P(SITE,"^",7)_CS_$S($D(^DIC(5,+$P(SITE,"^",8),0)):$P(^(0),"^",2),1:"UKN")_CS_PSOHZIP | 
|---|
|  | 58 | S $P(ORC,"|",23)="("_$P(SITE,"^",3)_")"_$P(SITE,"^",4) | 
|---|
|  | 59 | S ^TMP("PSO",$J,PSI)="ORC|"_ORC,PSI=PSI+1 | 
|---|
|  | 60 | Q | 
|---|
|  | 61 | ; | 
|---|
|  | 62 | NTEPMI(PSI) ;build NTE segment for PMI sheets                   ;*255 | 
|---|
|  | 63 | Q:'$D(DFN)  N A,I,PREVLN,CURRLN,PMI,PSNMSG,PSDRUG | 
|---|
|  | 64 | S PSDRUG=+$P(^PSRX(IRXN,0),"^",6),PMI=$$EN^PSNPPIO(PSDRUG,.PSNMSG) | 
|---|
|  | 65 | Q:'$D(^TMP($J,"PSNPMI")) | 
|---|
|  | 66 | S ^TMP("PSO",$J,PSI)="NTE"_FS_^TMP($J,"PSNPMI",0)_FS | 
|---|
|  | 67 | K A S CNT1=1,CNT=0 | 
|---|
|  | 68 | F A="W","U","H","S","M","P","I","O","N","D","R" S CNT=CNT+1,A(CNT)=A | 
|---|
|  | 69 | F I=1:1:11 I $D(^TMP($J,"PSNPMI",A(I))) D | 
|---|
|  | 70 | .S CNT=$P(^TMP($J,"PSNPMI",A(I),0),"^",3) | 
|---|
|  | 71 | .S (PREVLN,CURRLN)="" | 
|---|
|  | 72 | .F J=1:1:CNT D | 
|---|
|  | 73 | .. S ^TMP("PSO",$J,PSI,CNT1)=^TMP($J,"PSNPMI",A(I),J,0) | 
|---|
|  | 74 | .. ;PSO*198 check if " " should be inserted | 
|---|
|  | 75 | .. S CURRLN=^TMP("PSO",$J,PSI,CNT1) | 
|---|
|  | 76 | .. S:CNT1>1 PREVLN=$S(CNT>1:^TMP("PSO",$J,PSI,CNT1-1),1:"") | 
|---|
|  | 77 | .. I CNT1>1,$$SPACE^PSOHLDS3(PREVLN,CURRLN) D | 
|---|
|  | 78 | ... S ^TMP("PSO",$J,PSI,CNT1)=" "_^TMP("PSO",$J,PSI,CNT1) | 
|---|
|  | 79 | .. I J=1 S $P(^TMP("PSO",$J,PSI,CNT1),":",1)="\H\"_$P(^TMP("PSO",$J,PSI,CNT1),":",1)_"\N\" | 
|---|
|  | 80 | .. S CNT1=CNT1+1 | 
|---|
|  | 81 | S ^TMP("PSO",$J,PSI,CNT1-1)=^TMP("PSO",$J,PSI,CNT1-1)_FS_"Patient Medication Instructions" | 
|---|
|  | 82 | S PSI=PSI+1 K A,I,J,CNT,CNT1,^TMP($J,"PSNPMI") | 
|---|
|  | 83 | Q | 
|---|